erlang - 如何监控已关闭并正在重新启动的远程 erlang 节点

标签 erlang

我的应用程序在 erlang 集群中运行 - 通常有两个或更多节点。节点之间有主动监控(使用 erlang:monitor_node),工作得很好 - 我可以检测到一个正在运行的节点现在已关闭的事实并使用react。

但是我如何发现节点已重新启动并恢复正常工作?当然,我可以定期对节点执行 ping 操作,直到其恢复,但是有没有更好的方法是我错过的呢?流程组是实现这一目标的更好方法吗?

(编辑添加)

我认为执行诸如选举主管之类的技术的答案是我所缺少的思维过程。我会调查这一点并将这个问题标记为已完成......

最佳答案

But how do I then find out that the node has restarted and is back in business? I can of course periodically ping the node until it is back up, but is there a better way that I've simply missed? Is process groups a better way of achieving this?

只是一个想法,但是如何让重新启动的节点本身明确通知主管/监控节点它已完成重新启动并且再次可用?

您可以使用重复的“心跳消息”来实现此目的,或者提出一条专门用于在成功初始化后发送一次的自定义消息。大致如下:

start(SupervisorPID) ->
  SuperVisorPID ! {hello, MyPID};
  mainloop().

关于erlang - 如何监控已关闭并正在重新启动的远程 erlang 节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/984068/

相关文章:

tcp - 自动重新连接到 TCP 主机

windows - couchdb 在 Windows 上的最小部署

macros - erlang宏扩展错误

linux - 运行测试套件时在 Linux 上安装 CouchDB 时崩溃

concurrency - Erlang - 餐饮哲学家的错误

c - 为什么使用 enif_alloc 而不是 malloc

erlang - Erlang 中的 << 和 >> 符号

list - 从Erlang中的列表中删除重复的元素

Erlang 作为后端进程

Erlang:有可用的 Atompub(Atom 发布协议(protocol))库吗?