自动选择节点集群中的领导者

知道节点在任何时候上下都可以选择节点集群中的主导节点的最佳方法/算法是什么? 如果Java中提供了实现,那么这是一个优势。

我之前在Java中实现了Paxos算法。 它非常有用,而且相当简单。 (花了大约16个小时来组装它的演示,使用Threads来模拟服务器。我在线程化的时候也差得多!)

它无法帮助您准确选择领导者……但它将做的是允许各个节点就领导者达成一致。 所以你有这个领导者选择算法,但是因为每个节点都会选择它自己的节点来领导,你可能会在你的节点中发现“内战”。 Paxos算法允许您说出哪个领导者是真正的领导者。

http://en.wikipedia.org/wiki/Paxos_%28computer_science%29

您可以查看JGroups的来源。 (关键字:“协调员”,查看jGroups手册中的第7章 )

一些选择:

  • Hazelcast – 使用Spring Integration和Hazelcast进行集群领导者选举 。
  • JGroups – JGroups的 集群领导者选举
  • Apache ZooKeeper – 使用ZooKeeper进行集群领导者选举 。

我亲自用Hazelcast和JGroups实现了它,并且说它们都非常简单直接。 对于一个新项目,我会选择Hazelcast。