首页 文章

Cassandra Quorum:一致性水平

提问于
浏览
1

我在Cassandra有一个3 DC环,每个DC有一个4节点簇 . 所以它的4个节点* 3(DC)= 12个节点 . 我正在测试当一些节点在我们具有 Quorum 一致性级别时,Cassandra如何表现 . 我们在每个数据中心设置了一个复制因子3 . 所以我们的

Quorum = Floor(Sum of Replication FActor/2) + 1. RF = 3 quorum= 5.

从理论上讲,如果我的12节点集群中有五个节点,那么我应该适合读写 . 所以我在另一个数据中心(Dc2)中放下了一个完整的Datacenter DC1和3个节点 . 所以我在DC2中有1个节点,整个DC3(4个节点) . 我有5个节点 . 从理论上讲,这应该有利于我的写作在仲裁一致性方面取得成功 . 但是,当我跑的时候,我明白了

Cassandra.Unavailable Exception: Not enough replica available for query at consistency ONE (5 required but only 4 alive) .

但是,我确实有5个节点存活 . 我在这里错过了什么?

3 回答

  • 2

    QUORUM本身指的是同一数据中心的成员 . 在你的情况下DC3有4个 . 但是你要求QUORUM为5,DC3无法提供 . 这就是为什么有像ONE和LOCAL_ONE这样的概念 .

    我很确定你会在QUORUM 5上得到同样的错误,即使你的所有DC节点都已启动 .

    你可以参考:http://docs.datastax.com/en/cassandra/2.0/cassandra/dml/dml_config_consistency_c.html

  • 0

    从我的角度来看,操作应该而且将会失败 .

    从DC开始,您可以随时保证3个复制品,RF 3 .

    在另一个DC中的节点有大约60%来确定另一个副本 .

    3 1 = 4 .

    你要求CL 5 .

    5> 4 =>失败 .

  • 0

    Quorum用于整个群集,Local_Quorum用于单个数据中心 . 只需了解一些基础知识,cassandra就是分布式系统,意味着数据在您的集群中分布,每个节点拥有一个主要范围,同时复制其他节点的数据 . 这意味着负责存储一条数据的节点是为一致性计算的唯一节点 . 在你的情况下,5个节点上升并不意味着写入或读取满足Quorum一致性,因为所有节点上的DC肯定会在至少3个节点中有数据(记住你的RF是3),但DC只有1个节点将要么拥有或不拥有您要查询的数据 .

    在您的情况下,如果您使用Local_quorum点击所有节点的DC,您将获得正确的结果 .

相关问题