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

Zub*_*air 8 erlang virtual-machine

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

Van*_*uel 6

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


Zei*_*ssS 5

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

  • 我以为Erlang VM没下来? (4认同)
  • 重启的原因是修改VM选项.如果不重新启动,则无法执行此操作.此外:在这种情况下,可能会发生故障转移,因此应用程序不会关闭,只有一个节点.:d (2认同)
  • 升级到较新的Erlang VM版本也需要重新启动. (2认同)

jld*_*ont 5

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

如果您可以将每个VM放在不同的VM中,那么我会说这样更好.