Erlang 在运行时检测失败?

Erlang 在运行时检测失败?,erlang,Erlang,1) 当一个节点发生故障时,是否有一种从另一个节点自动检测的方法 2) 有没有办法自动重新启动刚刚崩溃的节点 关于我的第二个问题,我在谷歌上搜索了一下,没有发现任何关于在运行时从代码/创建节点的内容 我知道你可以用进程来做这件事——在运行时创建进程很简单,如果你想知道它们何时崩溃,你可以从管理者那里创建它们——但是我找不到任何与节点检测/创建相关的东西 对于希望设计更小版本的AmazonEDS的客户,我需要这个,但我无法想象Amazon会在节点宕机时手动重新启动节点 您可以使用net\u内核:m

1) 当一个节点发生故障时,是否有一种从另一个节点自动检测的方法

2) 有没有办法自动重新启动刚刚崩溃的节点

关于我的第二个问题,我在谷歌上搜索了一下,没有发现任何关于在运行时从代码/创建节点的内容

我知道你可以用进程来做这件事——在运行时创建进程很简单,如果你想知道它们何时崩溃,你可以从管理者那里创建它们——但是我找不到任何与节点检测/创建相关的东西


对于希望设计更小版本的AmazonEDS的客户,我需要这个,但我无法想象Amazon会在节点宕机时手动重新启动节点

您可以使用
net\u内核:monitor\u节点(true,[{node\u type,visible}])
从erlang应用程序内部监视所有可见节点。发件人:

调用进程订阅或取消订阅节点状态更改 信息。nodeup消息被传递到所有订阅进程 连接新节点时,会在以下情况下传递nodedown消息: 节点已断开连接


我看不到任何直接的方法(从接收
nodedown
消息的进程内部)可以用来启动远程机器上的节点。您可能需要编写一个小模块来自动执行此操作。

您可以在运行时通过执行
net\u kernel:start/1
net\u kernel:start([NodeName,shortnames])
net\u kernel:start([NodeName,longnames])
。请在此处阅读更多:。您甚至可以在erlang shell中试用它,并查看。您可以在运行时通过执行
net\u kernel:start/1
net\u kernel:start([NodeName,ShortName])
net\u kernel:start([NodeName,longnames])
。请在此处阅读更多:。您甚至可以在erlang shell中尝试它并查看。