我有一个凤凰项目,必须是CAP定理中的AP 所以我需要检测网络分区并确保我的节点连接到至少一个节点。
我的解决方案是knitr::knit
每隔30秒调用一次函数并检查Node.list,如果是[]则停止节点。
我有一个问题
这是最好的解决方案还是Erlang / OTP有一个直接的解决方案呢?
我搜索过但没有找到我对此文档的回答:http://erlang.org/doc/design_principles/distributed_applications.html
答案 0 :(得分:1)
有:global_group.monitor / 1函数可用于在集群中的某个节点上升或下降时获取通知:
defmodule NodeMonitor do
def start_link do
{:ok, spawn_link fn ->
:global_group.monitor_nodes true
monitor()
end}
end
def monitor do
receive do
{:nodeup, node} -> Logger.info "NodeMonitor: #{node} joined"
{:nodedown, node} -> Logger.warn "NodeMonitor: #{node} left"
end
monitor()
end
end