gpt4 book ai didi

apache-zookeeper - zookeeper中集成和仲裁的区别

转载 作者:行者123 更新时间:2023-12-04 13:08:17 25 4
gpt4 key购买 nike

我是动物园管理员的新手。我已经在一台机器上配置了它。但是我在zookeeper的文档中遇到了“ensemble”和“quorum”这两个词。

谁能告诉我这些之间的区别?

  • 合奏
  • 法定人数
  • 最佳答案

    这个答案是为那些对理解仍有疑问的人准备的Ensemble and Quorum . 合奏只不过是一个 Zookeeper 服务器集群,其中在 法定人数 定义规则以形成一个健康的 Ensemble。这是使用公式 Q = 2N+1 定义的哪里Q定义形成健康 Ensemble 所需的节点数,允许 N故障节点。您将在以下示例中了解此公式。
    在我开始举例之前,我想定义两件事——
    集群:一组连接的节点/服务器(现在将使用 node ),其中一个节点作为领导者/主节点,其余节点作为跟随者/从节点。
    健康合奏:在任何给定时间点只有一个事件领导者的集群,因此具有容错性。
    让我用一个例子来解释,它在定义 Ensemble and Quorum 时经常使用。 .

  • 假设您有 1 个 zookeeper 节点。这里不用担心,因为我们需要 1 个以上的节点来形成集群。
  • 现在取 2 个节点。形成一个集群没有问题,但形成一个健康的Ensemble却有问题,因为 - 假设这两个节点之间的连接丢失,那么两个节点都会认为另一个节点已关闭,因此它们都尝试充当Leader,这会导致不一致,因为它们无法相互通信。这意味着2个节点的集群甚至不能承受一次故障,那么这个集群有什么用??。他们并不是说你不能建立一个由 2 个节点组成的集群,他们只是说 - 这与拥有单个节点相同,因为两者都不允许出现单一故障。希望这很清楚
  • 现在取 3 个节点。形成集群或健康的 Ensemble 没有问题 - 因为根据上面的公式,这可以允许 1 次失败 3 = 2N+1 => N = (3-1)/2 = 1 .所以当下一次故障发生时(连接或节点故障),没有节点会被选为 Leader,因此 Ensemble 不会提供任何写/更新/删除服务,因此客户端集群的状态在 Zookeeper 集群节点之间保持一致.因此,在多数节点可用并连接之前不会发生领导者选举,其中多数 m = (n/2)+1 ,其中 n代表上次选举发生时可用的节点数。所以在这里,第一次选举发生在 3 个节点上(作为一个 3 个节点的集群)。然后发生了第一次失败,所以剩下的 2 个节点可以进行选举,因为他们拥有多数 m = (3/2)+1 = 2 .然后发生了第二次失败,现在他们没有多数,因为只有一个节点可供选举,但所需的多数是 m = (2/2)+1 = 2 .
  • 现在取 4 个节点。形成集群或健康的 Ensemble 没有问题,但有 4 个节点与 3 个节点相同,因为两者都只允许 1 次故障。让我们从 Quorum 公式 4 = 2N+1 => N = (4-1)/2 = ⌊1.5⌋ = 1 //floor(1.5)=1 推导出它
  • 现在取 5 个节点。形成集群或健康的 Ensemble 没有问题 - 因为根据上面的公式,这可能允许 2 次失败 5 = 2N+1 => N = (5-1)/2 = 2 .
  • 现在取 6 个节点。形成集群或健康的 Ensemble 没有问题,但 6 个节点与 5 个节点相同,因为两者都只允许 2 次故障。让我们从 Quorum 公式 6 = 2N+1 => N = (6-1)/2 = ⌊2.5⌋ = 2 推导出它

  • 结论:
  • 要形成 Quorum,我们至少需要 3 个节点 - 因为 2 个节点集群甚至无法处理单个故障
  • 形成奇数个节点的集合是很好的 - 如 n (偶数)节点倾向于允许与 n-1 相同数量的故障(奇数)节点
  • 拥有更多节点并不好,因为它们会增加性能延迟。建议的生产集群大小为 5 - 如果一台服务器因维护而停机,它仍然可以处理另外一个故障。
  • 关于apache-zookeeper - zookeeper中集成和仲裁的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25174622/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com