【问题标题】:Hierarchical quorums in ZookeeperZookeeper 中的分层仲裁
【发布时间】:2015-11-18 07:24:20
【问题描述】:

我正在尝试了解 Zookeeper 中的分层仲裁。文档here
举了一个例子,但我仍然不确定我理解它。我的问题是,如果我有一个两节点 Zookeeper 集群(我知道不建议这样做,但为了这个例子让我们考虑一下) server.1server.2, 我可以有如下的分层仲裁:

group.1=1:2 weight.1=2 weight.2=2

如上配置:

  1. 即使一个节点出现故障,我仍然有足够的票数 (?) 维持法定人数?这是一个正确的说法吗?

  2. 这里的 zookeeper quorum 值是多少(2 - 两个节点或 3 - 4票)

在第二个例子中,假设我有:

group.1=1:2 weight.1=2 weight.2=1

在这种情况下,如果 server.2 出现故障,

  1. 我是否还有足够的票数 (2) 来维持法定人数?

【问题讨论】:

  • 根据我对文档的解释(不是实际代码): 1. 不,quorum 需要多数,即超过总权重的一半; 2. 3+; 3. 是的。
  • 谢谢!我是这么认为的,但是文档非常混乱。
  • @SandeepMore the source code comment 更清楚,解释如下:通过这种结构,zookeeper 服务器被分成不相交的组,每个服务器都有一个权重。如果我们在大多数组中获得超过一半的组总权重,我们就获得了法定人数。

标签: apache-zookeeper


【解决方案1】:

据我从文档中了解到,当我们赋予节点权重时,大多数节点的数量会有所不同。例如,如果有 10 个节点,其中 3 个节点被赋予了 70% 的权重,那么让这三个节点在网络中处于活动状态就足够了。因此,

  1. 您没有足够的多数,因为两个节点的权重相同,均为 2。因此,如果一个节点出现故障,我们只有 50% 的网络处于活动状态。因此没有达到法定人数。

  2. 由于总权重为 4。我们需要 4 的 70%,即 2.8 如此接近 3,因为我们只有两个节点,所以两个节点都需要处于活动状态才能满足法定人数。

  3. 在第二个示例中,从权重可以清楚地看出,如果 65% 就足够了,那么 2/3 的网络就足够了(取决于我们设置的配置,我总是假设 70%)如果说网络是活的,那么一个权重为 2 的节点达到了法定人数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-06
    • 1970-01-01
    • 1970-01-01
    • 2017-10-29
    • 2021-04-08
    • 2022-01-14
    • 2020-06-12
    • 1970-01-01
    相关资源
    最近更新 更多