2010-07-02 88 views
10

我想在Erlang中编写一个主从应用程序。我想在下面的事情我从架构需要:启动远程Erlang节点

  • 当主人去世奴隶应该不会死,而是尝试重新连接到它,而主跌

  • 主应该会自动启动,如果他们不自动连接远程节点或者下降(可能在OTP上司的行为)

是否有OTP行为取向要做到这一点?我知道我可以使用slave:start_link()启动远程节点,我可以使用erlang:monitor()来监视节点,但我不知道gen_server行为中可以如何组合这个节点。

+0

erlang:monitor_node/2和erlang:monitor_node/3的功能也可用。 – 2010-07-02 17:07:47

+2

您是否看到分布式应用程序部分? http://www.erlang.org/doc/design_principles/distributed_applications.html – Zed 2010-07-03 09:21:12

+0

这里我们需要一些清晰的术语。你是否想通过多个erlang虚拟机来分发你的应用程序(这是运行多个节点()的)还是你想构建一个容错的进程树?从你的问题不完全清楚。 – 2010-12-06 15:07:18

回答

1

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

你不能只用从模块来实现这一目标,它明确规定“这是由一个主发表的所有从属节点将自动终止,主终止时”。

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

如果你要使用多个虚拟机二郎,那么你应该仔细考虑你有多少运行,因为其中大量的可能会导致性能问题,由于进出OS交换OS过程。最佳性能的经验法则是针对每个CPU核心只有一个OS进程(即一个Erlang虚拟机)。