2014-02-18 43 views
0

我正在閱讀分佈式系統教程。這裏有一個問題和它提供的解決方案:領導選舉

問:假設我們有10個節點,每個節點連接到其他9個節點。設計一個可以運行所有這些程序來識別領導者的程序。

答:在程序中,要求每個節點等待一段隨機時間,然後發送一個帶時間戳的「hello」消息。發送最早消息的節點將成爲領導者。如果有平局,重複上述步驟。這種方法僅需要發送9條消息。

問題和解決方案都很簡單。我的問題是:上述解決方案是否意味着每個節點都需要發送9條消息到所有其他9個節點?那麼在節點之間發送的消息總數將是9 * 10 = 90。對嗎?

謝謝。

回答

0

沒有,

的第一個節點發送消息9,所有其他節點將接收他們,不會再發送任何東西,那些每個人都知道誰是領導者。

如果另一個節點在收到另一個節點之前發出9個「hello」消息,則這是一條平行線。系統中的每個節點都會收到這兩條hello消息,並知道這是一條平行線。在那種情況下,只有那些節點纔會再次執行上述步驟。

0

不,總共不需要90條消息,因爲一旦節點收到「Hello」消息,就不需要發送它自己的「Hello」消息,因爲它知道網絡中已經有一個主消息。