寻找一些解决方案来处理Erlang集群分区。基本上,只要集群参与者再次可达,就应该将其添加回集群。最简单的解决方案可能是使用erlang node monitoring。如何在erlang集群中重新连接分区节点
有没有其他更好的解决方案,也许更动态,不需要固定节点列表?
寻找一些解决方案来处理Erlang集群分区。基本上,只要集群参与者再次可达,就应该将其添加回集群。最简单的解决方案可能是使用erlang node monitoring。如何在erlang集群中重新连接分区节点
有没有其他更好的解决方案,也许更动态,不需要固定节点列表?
有几个第三方库不必使用固定节点列表进行配置。我熟悉的两个是redgrid和erlang-redis_sd_epmd,可能还有其他的,但我只是不熟悉它们。
这两个确实对redis有外部依赖性,根据您需要决定什么可能或不可取。
redgrid是更简单的实现,但没有大量的功能。基本上,erlang节点连接到redis,所有连接到redis的erlang节点然后建立彼此的连接。您可以将元数据与节点相关联,并在另一个节点上检索它。
erlang-redis_sd_epmd稍微复杂一些,但允许更多配置。例如,不是只自动连接所有节点,节点可以发布它可以执行的服务,并且连接节点可以根据提供的服务查找节点。
不是现成的解决方案,但是如果您已经在为ejabberd进行自定义修改,则可以尝试集成此代码以解决群集分区后的mnesia冲突。