【发布时间】:2010-02-03 19:58:40
【问题描述】:
我想运行多个 Erlang 应用程序,一个是 Riak,另一个是 Web 服务器。我应该在不同的 Erlang VM 中运行它们吗?为什么?
【问题讨论】:
我想运行多个 Erlang 应用程序,一个是 Riak,另一个是 Web 服务器。我应该在不同的 Erlang VM 中运行它们吗?为什么?
【问题讨论】:
虽然许多人会推荐decoupling 这些子系统,但我会采取相反的方法。 Erlang 有一个内置策略可以在同一个 release 上运行多个 applications。如果您的应用程序直接相互通信,那么将它们捆绑到一个版本中可能是有意义的。这将使应用程序之间的调用更快。有些人会争辩说,如果您需要关闭系统以进行只有一个应用程序需要的升级,那么您所有的应用程序现在都将面临相同的命运。这是 Erlang 的一个有争议的问题,您可以在其中将应用程序分布在许多节点上。大多数升级也可以通过hot code loading 完成。
【讨论】:
如果他们不需要互相做任何事情:不。您可能需要为其中一个应用程序重新启动 VM,这会导致两者都停机。
【讨论】:
它被称为“命运共享”,一种常见的设计决策。共享资源的子系统越多,它们的“命运”就越紧密相连。如果发生故障/故障,“命运共享”越多 -> 系统故障的可能性越大。
如果您可以将每个虚拟机放在单独的虚拟机中,那么我会说这种方式更好。
【讨论】:
通过使用单独的虚拟机,你会失去很多 erlang 的好处。
【讨论】: