【问题标题】:Running multiple Erlang applications. One or many VMs?运行多个 Erlang 应用程序。一台或多台虚拟机?
【发布时间】:2010-02-03 19:58:40
【问题描述】:

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

【问题讨论】:

    标签: erlang virtual-machine


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 我以为 Erlang 虚拟机没有宕机?
      • 重新启动的原因是修改了 VM 选项。如果不重新启动,您将无法做到这一点。进一步:在这种情况下,可能会发生故障转移,因此应用程序不会关闭,只有一个节点。 :D
      • 升级到较新的 Erlang VM 版本也需要重启。
      【解决方案3】:

      它被称为“命运共享”,一种常见的设计决策。共享资源的子系统越多,它们的“命运”就越紧密相连。如果发生故障/故障,“命运共享”越多 -> 系统故障的可能性越大。

      如果您可以将每个虚拟机放在单独的虚拟机中,那么我会说这种方式更好。

      【讨论】:

      • 这不是意味着我应该在一个单独的虚拟机中运行我的所有服务器进程吗? :)
      • @zed:这并不完全是这个意思(注意大写字母中的“IF”)。 总是一个SPOF(单一故障)位于某处 - 它归结为管理系统以获得给定成本点的可接受水平的可用性。但是你知道这一切,我知道你现在只是在拉我的腿!干杯。
      【解决方案4】:

      通过使用单独的虚拟机,你会失去很多 erlang 的好处。

      【讨论】:

      • 失去了什么好处?
      猜你喜欢
      • 2011-09-29
      • 2011-04-04
      • 2022-11-18
      • 2013-06-22
      • 2020-11-01
      • 2011-11-20
      • 2018-05-26
      • 1970-01-01
      • 2020-09-15
      相关资源
      最近更新 更多