启动远程Erlang节点

hyp*_*ean 9 erlang distributed-computing erlang-otp master-slave

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

  • 当主设备停止时,从设备不应该死,而是在主设备停机时尝试重新连接

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

是否存在面向OTP的行为?我知道我可以启动远程节点,slave:start_link()我可以监视节点erlang:monitor(),但我不知道如何将其纳入gen_server行为.

Tim*_*Tim 1

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

您不能仅使用从属模块来完成此任务,它明确指出“当主控终止时,由主控启动的所有从属节点将自动终止”。

目前也没有 OTP 行为可以做到这一点。监督树是分层的;似乎您正在寻找在应用程序逻辑方面存在层次结构的东西,但生成是在对等基础上完成的(或在个人基础上完成,具体取决于您的观点)。

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