如何分发Erlang进程(主管行为)?

时间:2014-04-07 13:03:08

标签: erlang otp supervisor

这是一个Erlang初学者问题。

我有一个运行主管行为的Erlang应用程序。现在我想将它分布在不同的节点上,这意味着受监督的进程应该在不同的计算机上运行。

虽然我阅读了OTP文档,但我还没有掌握如何配置我的应用程序来执行此操作。

目前,.app文件如下所示:

{application, my_application,
[{description, "My Description"},
 {vsn, "1"},
 {modules, [my_application, my_supervisor, supervised_process, my_monitor]},
 {registered, [my_supervisor]},
 {applications, [kernel, stdlib]},
 {mod, {my_application,[]}},
 {env, [{file, "/usr/local/log"}]}
]}.

如果我有两台运行名为Erlang VM的计算机,如何配置应用程序以在两台计算机上运行某些supervised_processes?

1 个答案:

答案 0 :(得分:0)

一旦每个Erlang VM在具有相同Erlang cookie的同一内部网络上运行,您可以使用net_adm模块检查另一个节点是否存在以及rpc模块在​​它们之间进行通信

以下是检查其他节点是否正在响应并向其发送同步消息的示例:

 Remote = app2@localhost,
 pong = net_adm:ping(Remote),
 ok = rpc:call(Remote, supervised_process, do_something, []).

据我所知,你不能在一个节点上拥有一个监督员来监督另一个节点上的进程。您只能通过消息控制其他节点。