没有足够的副本可用于以一致性SERIAL进行查询(需要2个,但只有1个处于活动状态)

时间:2018-08-12 16:36:47

标签: cassandra cassandra-2.0

专家

我有以下配置3节点集群(Cassandra 2.1):

 - Replication factor of 2
 - Consistency level ONE
 - Driver consistency level SERIAL
 - SimpleStrategy
 - GossipingPropertyFileSnitch

在这种配置下,如果我关闭一个节点,则会出现以下错误:

Not enough replica available for query at consistency SERIAL (2 required but only 1 alive)

数据均匀分布在所有节点上,nodetool状态正确显示正在运行的2个cassandra节点上有一个节点处于关闭状态

具有CONSTITENCY ONE和2个节点ups的原因,为什么它要求两个副本节点都处于up状态?

我也读到了SERIAL驱动器一致性wrt WRITE失败: 如果三个节点之一关闭,则Paxos提交在以下情况下将失败:

  • CQL查询配置的ALL一致性级别
  • 驱动程序配置的SERIAL串行一致性级别
  • 复制因子3

如果我将复制因子设置为3,这将起作用。但是我认为没有必要这样做。

我在这里想念东西吗?

1 个答案:

答案 0 :(得分:4)

您已经在Cassandra中找到了Paxos协议中的一颗隐藏宝石。在后台,Paxos的工作方式是使用类似于 QUORUM 的一致性级别进行呼叫。

请注意,它在您的错误消息中抱怨SERIAL一致性级别,而不是您设置的一致性级别ONE。在大多数情况下,LWT会忽略设置的正常一致性级别。它遵循SERIAL或LOCAL_SERIAL一致性级别,该级别几乎直接映射到节点的 QUORUM LOCAL_QUORUM

两个节点的法定人数为:两个。因此,当一个节点关闭时,您会收到此错误消息。

相关问题