领导选举

时间:2014-02-18 19:58:59

标签: system distributed

我正在阅读有关分布式系统的教程。这是一个关于它的问题及其提供的解决方案:

问:假设我们有10个节点,每个节点都连接到其他9个节点。设计一个程序,在所有程序上运行以识别领导者。

答:在程序中,要求每个节点等待一段随机时间,然后发出带时间戳的“hello”消息。发送最早消息的节点将成为领导者。如果存在平局,请重复上述步骤。此方法仅需要发送9条消息。

问题和解决方案似乎都很简单。我的问题是:上述解决方案是否意味着每个节点需要向所有其他9个节点发送9条消息?然后节点之间发送的消息总数将是9 * 10 = 90.我是对的吗?

感谢。

2 个答案:

答案 0 :(得分:0)

没有

第一个节点发送9条消息,每个其他节点都会接收它们,不再发送任何消息,每个人都知道谁是领导者。

如果另一个节点在收到另一个节点之前发出9个“hello”消息,则这是一个平局。并且系统中的每个节点都将收到这两个问候消息,并且知道它是一个平局。在这种情况下,只有那些节点才会再次执行上述步骤。

答案 1 :(得分:0)

不,不需要总共90条消息,因为一旦节点收到“Hello”消息,它就不需要发出它自己的“Hello”消息,因为它知道网上已经有一个主节点。 / p>