Raft实现报告(六)
上文提到了,raft的AppendEntiresRPC会带有一致性检查机制,这种机制可以让leader强制follower与自己保持一致。(论文读到这里我其实又个问题,就是这些错误的日志条目一定是错误的吗?如果term较为老的节点成为了leader,那么不会导致操作回滚吗,如果强制覆盖了follower的log)
一致性检查机制的总结
通过这种机制,leader就无需再通过额外的手段去存储一致性log当他启动的时候。leader只需要开始正常操作,当AppendEntries一致性检查失败的时候logs就会自动收敛。一个leader从来不回重写,或者删除自己的日志条目(Leader有Append-Only属性)
log replication mechanism
他们设计的这种日志复制机制,就展现了之前共识特性的理想情况,只要大多数服务器处于运行状态,Raft就可以接受,复制,和申请新的日志条目,在正常情况下,可以通过单轮的RPC将leader的条目复制到大多数及群众,并切单个的慢速follower不会对性能造成影响。
补充
日志复制机制时MIT的学生,他们像更好理解Raft算法实现,设计出来的raft一致性验证的一种机制,因为可以更好的直观的感受raft保持强一致性的状态。