【问题标题】:How does raft deal with log in this scenario?在这种场景下,raft 是如何处理日志的?
【发布时间】:2017-01-20 13:51:57
【问题描述】:

假设上图中d被选为leader,它将如何处理索引为11和12的日志。在我看来,应该删除这两个日志,但是我在raft中没有找到任何线索关于如何处理类似上述场景的日志的论文。

【问题讨论】:

    标签: algorithm distributed raft


    【解决方案1】:

    如果 (d) 被选为领导者,那么它会将其日志复制到追随者,它不会删除索引 11 和 12 处的项目。请参阅raft paper 中有关日志复制的第 5.3 节,它说

    在 Raft 中,领导者通过强迫追随者的 日志复制自己的。这意味着冲突的条目 追随者日志将被领导者日志中的条目覆盖。

    领导选举的规则确保这是一个安全的决定。

    【讨论】:

    • 尚未提交 11 和 12 处的日志,据我了解,raft 不会重新提交之前几项尚未提交的日志。
    • 在领导者复制它们之前,它们不会被提交,但领导者会在成为领导者时复制先前的条款。一旦日志项被复制到足够多的节点,这些条目将被提交。
    • 在 raft paper 的 5.4.2 节中,图 8 举例说明了,通过提交以前的日志条目,它可能会覆盖之前的领导者已经提交的现有日志条目,所以我认为领导者 d 会不要复制日志 11 和 12 并提交它们。
    • 领导者不会从自己的日志中删除日志条目,所以它必须复制它们然后提交。
    • 好吧。那么(d)成为领导者的场景和(a)成为领导者的场景之间的日志会有所不同吗?
    猜你喜欢
    • 2013-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-14
    • 2011-04-01
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多