前言:当我在下面说“机器”时,我指的是物理专用服务器或虚拟专用服务器。当我说“节点”时,我指的是erlang虚拟机的一个实例,其中可能有多个在单个unix内核下作为单独的进程运行。
我有一个涉及多个erlang / OTP应用程序的项目。应用程序将一起运行并在同一台计算机上相互通信。他们都会使用内存和产生erlang进程来攻击磁盘。他们还将使用网络资源,因为他们将与群集中运行相同应用程序的类似计算机进行通信。
几乎所有这些通信都是通过HTTP进行的。因此,我可以将每个erlang OTP应用程序分离到同一台机器上的erlang VM的单独实例中,并且它们仍然可以相互通信。
我的问题是:让它们在一个erlang VM下运行是否更好,以便这个erlang VM进程可以分配对它们之间资源的访问,并安排执行各种erlang进程。
或者在给定服务器上使用单独的erlang节点会更好吗?
如果一个比另一个好,为什么?
我假设在单个erlang vm中运行所有这些应用程序,基本上,完全运行服务器,将带来更好的性能。操作系统只是管理磁盘和ram处于低级别,并且只有一个重要的进程(erlang VM)可以切换...并且当erlang VM具有所有的整体视图时,它可能更聪明地分配资源erlang进程。
这可能是我需要测试的东西,但我不能在短期内有效地做到这一点。
答案 0 :(得分:2)
答案是:这取决于。
使用单个节点的优点:
使用多个节点的优点:
答案 1 :(得分:2)
同意@I GIVE CRAP ANSWERS
我会选择一台虚拟机。原因如下:
我不关心虚拟机崩溃 - 你需要做好任何准备。心脏在同等单位的群体中特别有效。
答案 2 :(得分:1)
我们每个应用程序总是使用一个VM,因为它更容易管理。
在过去几年中,Erlang中的调度程序和SMP支持已经走过了漫长的道路,因此没有像过去那样在同一节点上运行多个虚拟机的原因。