2011-04-28 141 views
4

在节点集群中选择领先节点的最佳方法/算法是什么?知道节点在任何时候都会出现和停止?如果实现在Java中可用,则它是一个优点。自动选择节点集群中的领导者

+0

你是什么意思的“领先”?你能提供更多关于'node'是什么意思的细节吗? – 2011-04-28 20:44:44

+0

这不是严重依赖于您的使用场景吗?我的意思是你的用例中的领导者意味着什么?集群中间的那个?最大的?最小的? – pintxo 2011-04-28 20:45:55

+0

在多节点网络中,领导是哪个节点将拥有权威数据。即他们的数据比你的数据更好。例如,如果您向节点A提交数据,则必须将该数据发送到节点B和C.如果I(1纳秒后)向节点D提交数据,在它有机会从A到达B和C之前,需要有一种方法来知道我的数据更好。在这种情况下,D是领导者节点,因为它具有最新的数据写入。 – corsiKa 2011-04-28 20:49:00

回答

6

我已经在Java中实现了Paxos算法。这非常有用,而且相当简单。 (花了大约16个小时来完成它的演示,使用Threads来模拟服务器,然后我的线程也变得更糟!)

它不会帮助你完全选择领导......但是它是什么将做的是允许各个节点就领导者达成一致。所以你有这个领导者选择算法,但是因为每个节点都会选择它自己的节点来领导,所以你可能会在你的节点之间发现一场“内战”。 Paxos算法允许你说哪个领导者是真正的领导者。

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

+0

谢谢。我有关于Paxos实现的问题,但我会创建一个单独的问题。 – JVerstry 2011-05-01 17:41:47

1

您可以浏览的JGroups来源。 (关键词: “协调员”,JGroups的手册中检查出chapter 7