首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cassandra Quorum :一致性级别

Cassandra Quorum :一致性级别
EN

Stack Overflow用户
提问于 2016-03-19 11:09:10
回答 3查看 2.5K关注 0票数 1

我在Cassandra中有一个3 DC环,每个DC有一个4节点集群。所以它的4个节点*3(DC)= 12个节点。我正在测试Cassandra在某些节点宕机时的行为,当我们有Quorum一致性级别时。我们将每个数据中心的复制因子设置为3。所以我们的

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

从理论上讲,如果我的12节点集群中有5个节点,我应该可以很好地进行读写。因此,我关闭了一个完整的数据中心DC1,以及另一个数据中心(Dc2)中的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个节点是活动的。这里我漏掉了什么?

EN

回答 3

Stack Overflow用户

发布于 2016-10-14 23:23:22

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

在您的例子中,如果您使用Local_quorum在所有节点都打开的情况下访问DC,您将获得正确的结果。

票数 2
EN

Stack Overflow用户

发布于 2016-03-19 13:35:00

QUORUM本身是指同一数据中心的成员。在您的案例中,DC3的定额为4。但是您要求定额为5,这是DC3无法提供的。这就是为什么会有ONE和LOCAL_ONE这样的概念。

我非常确定,即使您的所有DC节点都在运行,您也会在QUORUM 5上收到相同的错误。

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

票数 1
EN

Stack Overflow用户

发布于 2016-10-14 16:38:50

在我看来,这些操作应该失败,也将失败。

从DC上,你可以保证在任何时候3个副本,RF 3。

另一个DC中的节点有大约60%的时间来固定另一个副本。

3+1= 4。

你要的是CL5.

5>4 =>失败。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36097368

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档