知识卡片

一致性检查修日志

普通读书笔记卡 · 1726.c

内容

Leader 发送 AppendEntries 时带前一条 entry 的 index 和 term;follower 不匹配就拒绝,leader 回退直到找到共同前缀,再覆盖分歧后缀。发散:日志修复的关键不是合并冲突,而是以 leader 的合法日志为准。

参考来源

- 位置:《分布式系统与一致性》第11章《复制日志算法Raft》日志一致性检查一节(源文件:_epub-src/OEBPS/Text/chapter15.xhtml) - 结论依据:原文明确"当leader发起AppendEntries RPC发送一个新entry时,会在请求中包含新entry前面一个entry的index和任期,如果follower在自己的日志中没有找到对应的index和任期,则拒绝这个新entry。如果leader发现AppendEntries调用失败,则把前一个entry通过AppendEntries发送给follower……直到AppendEntries调用成功……leader从这个entry开始往后逐个调用AppendEntries"。 - 原始内容:新的leader并不会专门启动一个一致性检查的过程。当leader发起AppendEntries RPC发送一个新entry时,会在请求中包含新entry前面一个entry的index和任期,如果follower在自己的日志中没有找到对应的index和任期,则拒绝这个新entry……直到AppendEntries调用成功……leader从这个entry开始往后逐个调用AppendEntries。