【问题标题】:Phoenix framework distributionPhoenix框架分布
【发布时间】:2017-11-05 13:11:14
【问题描述】:

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

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

我有一个问题

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

我在此文档中搜索并没有找到我的答案:http://erlang.org/doc/design_principles/distributed_applications.html

【问题讨论】:

    标签: erlang elixir phoenix-framework


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 2015-07-06
      • 2016-10-07
      • 1970-01-01
      • 2016-07-18
      • 2016-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多