说,我在木筏上有3个节点。由于网络故障,节点3与其他2个节点分离。然后节点3总是成为候选者,将requestVote args发送给其他人并发现它无法获得足够的投票。然后节点3增加其术语并尝试再次请求投票。因此,节点3的术语明显大于提交日志102, 103, 104, 105
的其他人。
一段时间后,网络恢复,节点3再次加入该组并成为关注者。但是,由于它的大项,它总是拒绝来自领导者(节点1)的AppendEntries。节点3如何将日志从102恢复到105?
Node 1(leader):
* logs [101, 102, 103, 104, 105]
* term [1, 2, 2, 2, 2 ...]
Node 2 (follower)
* logs [101, 102, 103, 104, 105]
* term [1, 2, 2, 2, 2 ...]
Node 3
* logs [101]
* term [1, 2, 3, 4, 5 ...]
答案 0 :(得分:4)
您必须查看领导者在重新加入群集后如何处理来自该关注者的响应。当领导者收到 AppendEntries 响应,表明另一个节点有更高的术语时,领导者将更新自己的术语并下台以强制进行新的选举。在选举议定书期间,所有候选人也将发现更高期限并更新他们自己的条款。然后,一些仍然拥有所有已提交条目的领导者将被选举,并且有一个术语> =该分区粉丝,将复制委员会条目。