欺负算法 - 检测失败

时间:2013-04-29 11:07:49

标签: algorithm bully-algorithm

欺凌算法的描述通常不包括实际检测到的故障。

我有一个欺凌算法的工作实现,它使用选举本身来检测失败,而不是让失败引发选举。

简而言之,我的实施中的选举是按计划进行的,而不是在检测到故障时进行。

显然,这意味着会产生网络流量,但它似乎是一种简单的解决方案,否则可能会变得复杂(例如,有一个单独的故障检测机制,它将拥有自己的网络流量)。

有人能看到这个问题吗?

2 个答案:

答案 0 :(得分:2)

让我们假设您的分布式系统中有4个节点A,B,C和D.让我们假设当前的领导者是A.只有当节点B,C或D中的任何一个识别出协调器A没有响应时才进行选举。由于消息超时或协调器未能发起握手,因此理解了领导者A的失败。与标准欺凌算法中的算法不同,选举仅在协调器失败或引入具有更高进程ID的新节点时执行。

答案 1 :(得分:1)

通常,当成员怀疑不再有领导者时,即在(本地)超时之后,领导者选举开始。 通常,本地超时是不够的,但此外还是领导者的预期行动。

采用这种方案,不需要定期重选,也不需要特殊的故障检测。