首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Raft如何保证日志一致性?

Raft如何保证日志一致性?
EN

Stack Overflow用户
提问于 2020-01-21 15:13:49
回答 1查看 182关注 0票数 0

我正在学习木排,我已经知道木排的基本原理。

当Leader当选时,它负责将追随者的日志更新为Leader的日志。更新关注者时,向后查找第一个匹配的<entry, term>,并使用以下日志更新关注者。

在匹配的<entry, term>之前,Raft如何保证领导者和追随者的日志是相同的?这种情况会发生吗:

代码语言:javascript
复制
                |
Leader          v  
Entry   : 1 2 3 4 5 6 7 8 9 10
Term    : 1 1 1 2 2 3 3 3 3 3 

Follower
Entry   : 1 2 3 4 5 6 7
Term    : 1 1 1 1 2 3 3
EN

回答 1

Stack Overflow用户

发布于 2020-01-27 17:52:44

Raft算法的这一特性称为对数匹配。

如果两个日志包含具有相同索引和术语的条目,则日志在直到给定索引的所有条目中都是相同的

这一点成立是因为:

在发送AppendEntries RPC时,leader会在其日志中包含紧接在新条目之前的条目的索引和术语。如果追随者在其日志中找不到具有相同索引和术语的条目,则它将拒绝新条目。一致性检查作为归纳步骤:日志的初始空状态满足日志匹配属性,并且一致性检查在日志扩展时保留日志匹配属性。因此,只要AppendEntries成功返回,领导者就会知道跟随者的日志与它自己通过新条目记录的日志相同。

https://raft.github.io/raft.pdf

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59835866

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档