启动远程Erlang节点

时间:2010-07-02 14:48:49

标签: erlang distributed-computing otp master-slave

我想在Erlang中编写一个主从应用程序。我正在考虑从架构中需要的以下内容:

  • 当主人死亡时,奴隶不应该死,而是在主人关闭时尝试重新连接奴隶

  • 如果远程节点没有自动连接或者它们已经关闭(可能是OTP中的主管行为)

  • ,它应自动启动远程节点

是否有针对OTP的行为?我知道我可以使用slave:start_link()启动远程节点,我可以使用erlang:monitor()监控节点,但我不知道如何将其合并到gen_server行为中。

2 个答案:

答案 0 :(得分:1)

我同意有关使用erlang:monitor_node和使用分布式应用程序的评论。

您不能只使用从模块来实现这一点,它清楚地指出“当主设备终止时,主设备启动的所有从设备节点将自动终止”。

目前还没有OTP行为。监督树是分层的;看起来你正在寻找在应用程序逻辑方面存在层次结构的东西,但是产生是在点对点的基础上完成的(或根据你的观点以个体为基础)。

如果您要使用多个Erlang VM,那么您应该仔细考虑运行的数量,因为大量的Erlang VM可能会因操作系统交换OS进程而导致性能问题。最佳性能的经验法则是每个CPU核心只有一个OS进程(即一个Erlang VM)。

答案 1 :(得分:1)

如果您对研究其他实现感兴趣,Basho的riak_core框架可以很好地利用分布式分布式应用程序。

riak_core_node_watcher.erl包含大部分有趣的节点观察代码。

搜索,你会发现有不少talks and presentations about the framework