Préface: Lorsque je dis «machine» ci-dessous, je veux dire soit un serveur physique dédié, soit un serveur privé virtuel. Quand je dis «nœud», je veux dire, une instance de la machine virtuelle erlang, dont plusieurs peuvent être exécutées comme des processus séparés sous un seul noyau unix.Est-il préférable de démarrer plusieurs nœuds erlang par machine, ou seulement un par machine?
J'ai un projet qui implique plusieurs applications erlang/OTP. Les applications fonctionneront ensemble et se parleront sur la même machine. Ils vont tous frapper le disque, en utilisant la mémoire et les processus erlang spawning. Ils utiliseront également les ressources réseau car ils dialogueront avec des machines similaires avec le même ensemble d'applications s'exécutant sur eux dans un cluster.
La quasi-totalité de cette communication s'effectue via HTTP. Ainsi, je pourrais séparer chaque application OTP erlang dans une instance distincte de la machine virtuelle erlang sur la même machine et ils pourraient encore se parler. Ma question est: Vaut-il mieux les faire fonctionner sous une machine virtuelle erlang de sorte que ce processus erlang VM puisse allouer l'accès aux ressources entre eux, et planifier l'exécution des différents processus erlang.
Ou est-il préférable d'avoir des nœuds erlang séparés sur un serveur donné?
Si l'un est meilleur que l'autre, pourquoi?
Je suppose que l'exécution de toutes ces applications dans un seul erlang vm qui est donné, essentiellement, la course complète du serveur, se traduira par de meilleures performances. L'OS gère juste le disque et ram au niveau bas, et a seulement un processus significatif (le erlang VM) pour commuter avec ... et le VM d'erlang est probablement plus intelligent au sujet de l'allocation des ressources quand il a la vue holistique de tous les processus erlang.
Cela peut être quelque chose que j'ai besoin de tester, mais je ne suis pas en mesure de le faire efficacement à court terme.
Un autre avantage de plusieurs nœuds est que vous n'avez pas besoin du support de smp. – Zed