Jr0*_*Jr0 9 erlang distributed-apps
问题在于分布式应用程序协商的一部分是当节点握手以确定哪个节点将保持停顿以及哪个节点将被停顿时,应用程序将在所有节点处启动.如果可能的话,我需要应用程序不要在多个节点上运行.
不幸的是,现在 Erlang 的接管和故障转移功能非常有限,因此您需要应用程序在所有节点上运行才能使这些功能发挥作用。
我想到的唯一想法有点疯狂,涉及多一层间接,但它实际上可能有效。
您可以编写一个虚假的轻量级包装应用程序,然后在所有节点上启动该应用程序。该应用程序使用标准的 Erlang 分发功能。然后,您只需启动原始应用程序即可实施接管/故障转移策略:
-module(wrapper).
-behaviour(application).
[...]
start({takeover, _Node}, _Args) ->
application:start(original_app).
[...]
Run Code Online (Sandbox Code Playgroud)
另外,请记住,当您application:start(my_app)在所有节点中键入分布式应用程序时,该应用程序不会在所有节点上启动。您可以通过application:which_applications()在每个节点上键入来验证这一点。您将注意到应用程序如何在一个节点上运行。
最后,请问为什么不能在多个节点上启动应用程序?
| 归档时间: |
|
| 查看次数: |
417 次 |
| 最近记录: |