我想运行多个Erlang应用程序,一个是Riak,另一个是Web服务器。我应该在同一个单独的Erlang VM中运行它们吗?为什么?
643ylb081#
虽然很多人会建议将这些子系统分离,但我会采取相反的方法。Erlang有一个内置的策略,可以在同一个release上运行许多applications。如果你的应用程序彼此直接对话,那么将它们捆绑到一个发布版本中可能是有意义的。这将使应用程序之间的调用更快。有些人会说,如果你需要关闭系统来升级一个只有一个应用程序需要的程序,那么你所有的应用程序现在都有同样的命运。这是Erlang的一个争论点,因为你在许多节点上分布你的应用程序。此外,大多数升级可以通过热代码加载完成。
b4qexyjb2#
如果他们不需要彼此做任何事情:不需要。您可能需要为其中一个应用程序重新启动VM,这将导致两个应用程序都停机。
lyfkaqu13#
这就是所谓的“命运共享”,一种共同的设计决策。共享共同资源的子系统越多,它们的“命运”就越紧密地联系在一起。一旦发生故障,“命运共享”就越多--〉系统故障的可能性就越大。
如果您可以在单独的虚拟机中分别使用它们,那么我会说这样更好。
tzxcd3kk4#
如果使用单独的VM,您将失去很多Erlang的优势。
4条答案
按热度按时间643ylb081#
虽然很多人会建议将这些子系统分离,但我会采取相反的方法。Erlang有一个内置的策略,可以在同一个release上运行许多applications。如果你的应用程序彼此直接对话,那么将它们捆绑到一个发布版本中可能是有意义的。这将使应用程序之间的调用更快。有些人会说,如果你需要关闭系统来升级一个只有一个应用程序需要的程序,那么你所有的应用程序现在都有同样的命运。这是Erlang的一个争论点,因为你在许多节点上分布你的应用程序。此外,大多数升级可以通过热代码加载完成。
b4qexyjb2#
如果他们不需要彼此做任何事情:不需要。您可能需要为其中一个应用程序重新启动VM,这将导致两个应用程序都停机。
lyfkaqu13#
这就是所谓的“命运共享”,一种共同的设计决策。共享共同资源的子系统越多,它们的“命运”就越紧密地联系在一起。一旦发生故障,“命运共享”就越多--〉系统故障的可能性就越大。
如果您可以在单独的虚拟机中分别使用它们,那么我会说这样更好。
tzxcd3kk4#
如果使用单独的VM,您将失去很多Erlang的优势。