Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我想运行多个 Erlang 应用程序,一个是 Riak,另一个是 Web 服务器。我应该在不同的 Erlang VM 中运行它们吗?为什么?
虽然许多人会建议将这些子系统解耦,但我会采取相反的方法。Erlang 有一个内置的策略,可以在同一个版本上运行许多应用程序。如果您的应用程序直接相互通信,那么将它们捆绑到一个版本中可能是有意义的。这将使应用程序之间的调用更快。有些人会争辩说,如果您需要关闭系统以进行只有一个应用程序需要的升级,那么您所有的应用程序现在都将面临相同的命运。这是 Erlang 的一个有争议的问题,您可以在其中将应用程序分布在许多节点上。大多数升级也可以通过热代码加载来完成。
如果他们不必相互做任何事情:不。您可能需要为其中一个应用程序重新启动 VM,这将导致两者都停机。
它被称为“命运共享”,一种常见的设计决策。共享资源的子系统越多,它们的“命运”就越紧密相连。如果发生故障/故障,“命运共享”越多 -> 系统故障的可能性越大。
如果您可以将每个虚拟机放在单独的虚拟机中,那么我会说这种方式更好。
通过使用单独的 VM,您会失去很多 erlang 的好处。