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