2011-04-28 147 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