RAFT 中 follower 恢复时 term 数很大时,leader 如何复制日志?

How can leader replicate logs when a follower recovers with a large term number in RAFT?

说,我在 raft 中有 3 个节点。由于网络故障,节点 3 与其他 2 个节点分离。然后节点 3 总是成为候选人,向其他人发送 requestVote args 并发现它无法获得足够的选票。然后节点 3 增加其任期并尝试再次请求投票。因此节点 3 的任期明显大于其他提交日志 102, 103, 104, 105.

的人

一段时间后,网络恢复,节点3再次加入群组,成为follower。但是,由于它的任期很大,它总是拒绝来自领导者(节点 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  ...]

您必须查看领导者在重新加入集群后将如何处理来自该追随者的响应。当领导者收到 AppendEntries 响应表明另一个节点有更高的任期时,领导者将更新自己的任期并下台 以强制进行新的选举.在选举协议期间,所有候选人也会发现更高的任期并更新自己的任期。然后,一些仍然拥有所有已提交条目的领导者将被选举,并且有一个任期 >= 那个分区的追随者,将复制委员会条目到它。