网络断开后如何重新加入筏子?

时间:2017-11-30 07:37:10

标签: distributed-computing distributed-system raft

我在木筏上遇到了问题。

在论文“寻找可理解的共识算法(扩展版)”中,它说:

  

要开始选举,跟随者会增加其当前值   术语和过渡到候选国家。 (见第5.2节)

它还说:

  

接收方应为“如果arnd.term< currentTerm”在AppendEntries RPC和RequestVot RPC中回复false

所以,让我们想想这一幕,筏系统中有5台机器,现在机器0是领导者,机器1到4是跟随者,现在是第1项。突然,机器1断开网络,然后机器1是超时,它开始领导选举,它发送RequestVot RPC,确定它将失败(网络断开连接)。然后它将开始新的领导人选举......等等。机器1的术语是多次增加。也许增加到10.当机器1'Term增加到10时,它连接网络。并且领导者(机器0)将心跳发送到机器1,机器1将拒绝心跳(机器0'小于机器1),现在,机器1将无法重新加入系统。

1 个答案:

答案 0 :(得分:3)

这里要记住的重要一点是,当一个节点收到一个更大的术语时,总是更新其本地术语。因此,由于机器1将拒绝领导者的请求,领导者将最终了解更高的术语(10)和降级,然后将选择新的节点作为术语> 10。

显然这是低效的,但这就是为什么大多数现实世界的实现使用所谓的“预投票”协议,检查以确保节点可以赢得选举,然后转换到候选角色和增加这个词。