我正在学习木排,我已经知道木排的基本原理。
当Leader当选时,它负责将追随者的日志更新为Leader的日志。更新关注者时,向后查找第一个匹配的<entry, term>,并使用以下日志更新关注者。
在匹配的<entry, term>之前,Raft如何保证领导者和追随者的日志是相同的?这种情况会发生吗:
|
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发布于 2020-01-27 17:52:44
Raft算法的这一特性称为对数匹配。
如果两个日志包含具有相同索引和术语的条目,则日志在直到给定索引的所有条目中都是相同的
这一点成立是因为:
在发送AppendEntries RPC时,leader会在其日志中包含紧接在新条目之前的条目的索引和术语。如果追随者在其日志中找不到具有相同索引和术语的条目,则它将拒绝新条目。一致性检查作为归纳步骤:日志的初始空状态满足日志匹配属性,并且一致性检查在日志扩展时保留日志匹配属性。因此,只要AppendEntries成功返回,领导者就会知道跟随者的日志与它自己通过新条目记录的日志相同。
https://stackoverflow.com/questions/59835866
复制相似问题