凤凰框架分布

时间:2017-06-04 18:27:01

标签: erlang elixir phoenix-framework

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

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

我有一个问题

这是最好的解决方案还是Erlang / OTP有一个直接的解决方案呢?

我搜索过但没有找到我对此文档的回答:http://erlang.org/doc/design_principles/distributed_applications.html

1 个答案:

答案 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