2017-06-04 93 views
0

我有一个凤凰项目,必须在CAP理论 的AP,所以我需要检测网络分区,并确保我的节点连接到至少一个节点。凤凰框架分布

我的解决方案是一个GenServer,每30秒调用一次函数并检查Node.list,如果它是[]停止节点。

我有一个问题

这是最好的解决办法或二郎山/ OTP有一个简单的解决方案?

我搜索并没有发现我的这个文件上回答:http://erlang.org/doc/design_principles/distributed_applications.html

回答

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