1

寻找一些解决方案来处理 Erlang 集群分区。基本上,只要集群参与者再次可访问,就应该将其添加回集群。最简单的解决方案可能是使用erlang 节点监控

是否有任何其他/更好的解决方案,也许更动态的不需要固定节点列表?

4

2 回答 2

1

有一些第 3 方库不必使用固定节点列表进行配置。我熟悉的两个是redgriderlang-redis_sd_epmd,可能还有其他的,但我只是不熟悉它们。

这两者都对redis有外部依赖,这可能是可取的,也可能不是可取的,具体取决于您决定需要什么。

redgrid是更简单的实现,但没有很多功能。基本上erlang节点连接到redis,然后所有连接到redis的erlang节点相互建立连接。您可以将元数据与一个节点相关联并在另一个节点上检索它。

erlang-redis_sd_epmd有点复杂,但允许更多的配置。例如,节点不仅可以自动连接所有节点,还可以发布它可以执行的服务,并且连接节点可以根据提供的服务查找节点。

于 2013-10-17T18:46:07.107 回答
1

不是现成的解决方案,但如果您已经在对 ejabberd 进行自定义 mods,您可以尝试集成此代码,以解决集群分区后的 mnesia 冲突。

https://github.com/uwiger/unsplit

于 2013-10-18T21:25:05.043 回答