【问题标题】:The replication factor in cassandra and later changecassandra 中的复制因子和后来的变化
【发布时间】:2019-12-06 20:44:51
【问题描述】:

我们有一个 3 节点 Cassandra 集群,我们创建了一个复制因子为 1 的密钥空间。在我们将密钥空间的复制因子更改为 2(并对该密钥空间执行 nodetool 修复)后,我看到它共享一个具有所有三个节点的 Merkle 树。

我的问题是,为什么它会与 3 个节点共享,而不仅仅是与 2 个节点共享?

【问题讨论】:

    标签: cassandra


    【解决方案1】:

    触发令牌重新分配时,必须联系所有节点。这是必要的,因为所有节点必须分担相同数量的令牌范围责任。为了实现这一点,令牌范围责任将根据每个节点而改变;尤其是对于这么小的集群。

    举例来说,您有一个 RF 为 1 的 3 节点集群。这意味着每个节点负责总令牌的 33.33%(-2^63 到 2^63 -1)。

    通过将 RF 从 1 增加到 2,同时保持节点数量不变,您实际上是加倍集群将存储的数据量。因此,每个节点现在负责 66.67% 的数据。

    如果您将 RF 进一步增加到 3,那么每个节点将负责 100% 的数据,有效地将所有数据存储在每个节点上。

    【讨论】:

      【解决方案2】:

      它与所有其他节点通信的原因是,一些行将从节点 1 到节点 2,另一些从节点 1 到节点 3,一些从节点 2 到节点 1,等等。每一行都可能被重新分配,并且它们开始/结束的位置包括数据中心中的整个节点。每行都重新计算到它所属的位置。那有意义吗?

      【讨论】:

        猜你喜欢
        • 2017-11-16
        • 2019-08-10
        • 2013-12-14
        • 1970-01-01
        • 1970-01-01
        • 2013-02-02
        • 1970-01-01
        • 1970-01-01
        • 2018-10-11
        相关资源
        最近更新 更多