consensus - 存在分区时的 Raft 算法领导者选举
问题描述
假设您有三台服务器 A、B 和 C
A 和 C 之间存在网络分区。
在领导人选举期间,可能会发生以下步骤:
a) A 遇到超时并开始新的任期 1 的选举。B 响应投票请求,A 成为领导者。
b) 一段时间后,C 开始新的任期 1 选举,但由于 B 已经在任期 1 投票给 A,它拒绝投票给 C,并且由于超时而导致 C 的领导选举失败。
c) C 发生另一个超时,它开始进行第 2 任期的领导人选举。在这种情况下,B 接受 C 作为领导人,因为它有更高的任期,而 C 成为领导人。
d) 同样,稍后 A 开始并进行第 3 学期的选举,领导层在 A 和 C 之间交替。
这个摊位不会进步吗?我在这里错过了什么吗?
解决方案
如果A
可以到达则可以到达并且B
不在网络分区中。C
B
A
C
如果一个节点或一组节点无法从另一个节点或一组节点访问,则在这两个节点/节点组之间存在网络分区。