代码之家  ›  专栏  ›  技术社区  ›  hyperboreean

启动远程Erlang节点

  •  9
  • hyperboreean  · 技术社区  · 15 年前

    我想在二郎写一个主从应用程序。我在思考我需要从架构中得到的以下东西:

    • 奴隶不应该在主人死的时候死去,而应该在主人死的时候重新连接。

    • 如果远程节点不自动连接或处于关闭状态(可能是在 OTP )

    有没有一个面向OTP的行为来做到这一点?我知道我可以用 slave:start_link() 我可以用 erlang:monitor() 但我不知道如何将其合并到 gen_server 行为。

    2 回复  |  直到 14 年前
        1
  •  1
  •   Tim    14 年前

    我同意关于使用erlang:monitor_节点和使用分布式应用程序的意见。

    您不能只使用从属模块来完成这一点,它清楚地说明“当主节点终止时,由主节点启动的所有从属节点都将自动终止”。

    目前也没有OTP行为来做这件事。监督树是层次结构的;看起来您在寻找应用程序逻辑上有层次结构的东西,但是生成是在对等基础上完成的(或者是单独的基础,取决于您的观点)。

    如果要使用多个Erlang虚拟机,则应仔细考虑运行的虚拟机数量,因为大量虚拟机可能会由于操作系统交换操作系统进程而导致性能问题。最佳性能的经验法则是,目标是每个CPU核心不超过一个OS进程(即一个Erlang VM)。

        2
  •  1
  •   stephbu    14 年前

    如果您对研究其他实现感兴趣,那么basho的 riak_core 框架在分散的分布式应用程序上有很好的表现。

    riak_core_node_watcher.erl 其中包含大多数有趣的节点观察代码。

    搜索你会发现有很多 talks and presentations about the framework .