运行多个Erlang应用程序。一个或多个虚拟机?

时间:2010-02-03 19:58:41

标签: erlang virtual-machine

我想运行多个Erlang应用程序,一个是Riak,另一个是Web服务器。我应该在相同的Erlang VM中运行它们吗?为什么?

4 个答案:

答案 0 :(得分:6)

虽然很多人会推荐decoupling这些子系统,但我会采取相反的方法。 Erlang有一个内置策略,可以在同一个applications上运行多个release。如果您的应用程序直接相互通信,那么将它们捆绑到一个版本中可能是有意义的。这将使应用程序之间的调用更快。有些人会争辩说,如果您需要关闭系统以进行只有一个应用程序需要的升级,那么所有应用程序现在都会共享相同的命运。对于Erlang来说,这是一个没有实际意义的地方,您可以在多个节点上分发应用程序。此外,大多数升级都可以使用hot code loading完成。

答案 1 :(得分:5)

如果他们不需要彼此做任何事情:否。您可能需要为其中一个应用程序重新启动VM,这会导致两者都停机。

答案 2 :(得分:5)

它被称为“命运共享”,一种常见的设计决策。子系统共享共享资源越多,他们的“命运”就越紧密。在出现故障/失败的情况下,“命运分享”越多 - >系统性失败的可能性增加。

IF 你可以让每个人都在不同的虚拟机中,然后我会说这样做会更好。

答案 3 :(得分:-1)

通过使用单独的VM,您将失去许多erlang好处。