2017-06-04 10 views
0

私はCAP定理 でAPでなければならないphoenixプロジェクトを持っていますので、ネットワークパーティションを検出し、ノードが少なくとも1つのノードに接続していることを確認する必要があります。Phoenixフレームワークの配布

私の解決策は、30秒ごとに関数を呼び出し、Node.listをチェックし、[]ならノードを停止するというGenServerです。

私は質問

を持っているが最善の解決策やアーラン/ 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 
関連する問題