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

问题描述 投票:3回答:1

我有一个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虚拟机的应用程序,我如何配置应用程序在两台计算机上运行一些supervised_processes?

erlang otp erlang-supervisor
1个回答
0
投票

一旦每个Erlang虚拟机都在同一个内部网络上运行,并使用相同的Erlang cookie,你可以使用 网卡 模块来检查另一个节点是否存在,并检查其他节点是否存在。rpc 模块来实现它们之间的通信。

下面是一个检查其他节点是否有响应并向其发送同步消息的例子。

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

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

© www.soinside.com 2019 - 2024. All rights reserved.