【问题标题】:When does a term begin and end in Raft?一个术语在 Raft 中的开始和结束时间是什么时候?
【发布时间】:2020-01-13 16:46:06
【问题描述】:

我一直在阅读论文“寻找可理解的共识算法”。我对“术语”的工作方式感到困惑。

我有两个想法。

  1. 一个任期从一次选举开始,到下一次选举结束。由于当前领导者的崩溃,可能会发生下一次选举。只要现任领导工作完美,任期可能会持续很长时间。

  2. 一个术语的结束是在它开始时确定的。 For example, after a server wins the election, the term begins and plans to end in 30 minutes.然后在 30 分钟后,领导者停止发送心跳以引发另一次选举。

那么哪一个是正确的?我觉得第一个想法更有意义,它提供了更好的性能。

【问题讨论】:

    标签: consensus raft


    【解决方案1】:

    任何一个选项都可以,但您的第一个选项更可取。如果您停止发送心跳,那么您可能需要等待相当长的一段时间(也许几秒钟)才能选出新的主节点。理论上,您可以避免这种等待并立即触发选举,但选举总是具有轻微的破坏性,因此通常会设计系统以尽可能避免它们。

    真正需要选举的唯一时间是出现问题:例如通信中断或某些节点出现故障。实际上,集群可能会运行很长时间(几周?几年?)而不会出现故障,因此它们不需要更频繁的选举。

    还要注意,由于通信的异步性质以及在分布式系统中确定时间概念的困难,术语实际上并没有明确定义(全局)的开始和结束。一个节点可能认为一个术语仍在进行中,即使其他节点都认为它没有开始或已经结束。

    【讨论】:

    • 大多数人需要每月打补丁,所以我建议几年可能有点乐观:-)
    • 为什么论文说“时间分为术语”?这是否意味着,term 必须有时间限制,或者 term 可以一直存在到领导者将心跳发送给追随者?
    猜你喜欢
    • 2016-02-03
    • 1970-01-01
    • 1970-01-01
    • 2018-03-07
    • 2021-01-19
    • 2016-09-24
    • 2015-04-24
    • 2011-10-11
    • 1970-01-01
    相关资源
    最近更新 更多