【问题标题】:How does raft prevent submitted logs from being overwrittenraft如何防止提交的日志被覆盖
【发布时间】:2023-02-06 07:31:29
【问题描述】:

figure 8 in raft paper 考虑像 raft paper 中的图 8 的情况,但是在 (c) 中,来自任期 2 的日志条目已经提交,并且 s1 崩溃,s5 成为领导者,然后 s5 发送追加条目 rpc 到 s2,s3,s4,根据rule, s2, s3, s4 必须把term 2的日志条目替换成term 3的日志条目,导致已经提交的日志被覆盖,如何避免?

我在6.824实验室遇到过这种情况,导致我有时会失败(很少见。百分百中只有一两次)

【问题讨论】:

    标签: distributed-computing distributed-system consensus raft paxos


    【解决方案1】:

    问题在于投票;如果有一个已提交的项目 X,那么只有当它的日志中有项目 X 时,一个节点才能被选举。基本上,提交的项目永远不会被覆盖。

    在您的情况下,如果 S5 没有最新的承诺值,它将无法获得多数选票成为领导者。

    快速编辑:raft 的关键属性是只有合法节点才能成为领导者。如果领导者提交了一个值并死亡(甚至在其他节点了解提交的索引之前),它保证大多数节点都具有该值。因此,下一位领导者将从该集合中选出。

    【讨论】:

      猜你喜欢
      • 2021-10-21
      • 2017-12-19
      • 2021-02-08
      • 2020-07-23
      • 2018-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多