专家
我有以下配置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提交在以下情况下将失败:
如果我将复制因子设置为3,这将起作用。但是我认为没有必要这样做。
我在这里想念东西吗?
答案 0 :(得分:4)
您已经在Cassandra中找到了Paxos协议中的一颗隐藏宝石。在后台,Paxos的工作方式是使用类似于 QUORUM 的一致性级别进行呼叫。
请注意,它在您的错误消息中抱怨SERIAL一致性级别,而不是您设置的一致性级别ONE。在大多数情况下,LWT会忽略设置的正常一致性级别。它遵循SERIAL或LOCAL_SERIAL一致性级别,该级别几乎直接映射到节点的 QUORUM 或 LOCAL_QUORUM 。
两个节点的法定人数为:两个。因此,当一个节点关闭时,您会收到此错误消息。