我在一台机器上运行CouchDB实例,因此使用自己的Erlang VM进程。如果我在该机器上运行另一个单独的Erlang应用程序,那么在CouchDB和我的应用程序之间共享相同的VM是否更好,或者是否建议启动新的Erlang节点?
答案 0 :(得分:5)
虽然很多人会推荐decoupling这些子系统,但我会采取相反的方法。 Erlang有一个内置策略,可以在同一个applications上运行多个release。如果您的应用程序直接相互通信,那么将它们捆绑到一个版本中可能是有意义的。这将使应用程序之间的调用更快。有些人会争辩说,如果您需要关闭系统以进行只有一个应用程序需要的升级,那么所有应用程序现在都会共享相同的命运。对于Erlang来说,这是一个没有实际意义的地方,您可以在多个节点上分发应用程序。此外,大多数升级都可以使用hot code loading完成。
答案 1 :(得分:4)
在同一个machnie上运行多个VM没有问题(至少是最近的OTP版本),但是如果你在一个Erlang节点上拥有所有应用程序,那么它非常方便。更简单的通信,依赖管理,监督和容错 - 在这种情况下您可以免费获得它,而不是在源控制系统中仅保留一个“节点”。
问题始于CouchDB。它没有合适的构建系统,可以将它用作独立的Erlang节点应用程序之一。因此,在这种情况下,您需要至少有2个VM(一个充当Couch守护程序,另一个充当您的应用程序)