我的应用程序在 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/