4

スーパーバイザーの動作を実行する 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 を実行している 2 台のコンピューターがある場合、両方のコンピューターで supervised_processes を実行するようにアプリを構成するにはどうすればよいですか?

4

1 に答える 1

0

各 Erlang VM が同じ Erlang Cookie を使用して同じ内部ネットワーク上で実行されると、net_admモジュールを使用して他のノードが存在することを確認し、rpcモジュールを使用してそれらの間で通信することができます。

他のノードが応答しているかどうかを確認し、同期メッセージを送信する例を次に示します。

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

私の知る限り、あるノードのスーパーバイザーが別のノードのプロセスを監視することはできません。メッセージを介してのみ他のノードを制御できます。

于 2014-04-07T14:04:24.417 に答える