2017-06-04 94 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