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

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

我是Cassandra的新手,目前遇到一个问题,我的cassandra设置如下,

  1. 1 个数据中心,1 个集群
  2. 3 个节点。
  3. 简单策略
  4. 持久写入:正确
  5. 复制因子:创建键空间时为 2。
  6. 使用 IF NOT EXISTS 将数据插入 table.
  7. 种子节点:2个

然后我关闭了一个种子节点,我得到了以下错误:

ResponseError:没有足够的副本可用于一致性 SERIAL 查询(需要 2 个,但只有 1 个有效)

根据理解,一致性序列等同于 QUORUM.You 在 3 节点集群中具有 RF=2,因此 Cassandra 中的数据基于哈希插入。因此,当您将数据插入集群时,数据可能会插入到两个种子 nodes.So 上,当您在一个种子节点关闭的情况下检索数据时,您可能会收到此错误,因为集群未达到所需的一致性级别。 详情请参考 link。 https://docs.datastax.com/en/ddac/doc/datastax_enterprise/dbInternals/dbIntConfigSerialConsistency.html

这很正常,SERIAL 需要一个具有法定数量副本的 Paxos 事务。对于 RF 2,法定人数为 2; iow,您不能容忍任何节点向下写入 SERIAL 到具有 RF 2 的密钥空间。

经验法则:不要使用 RF 2,它没用。您的法定人数是:(2/2)+1 = 2,但对于 RF 3,它是相同的法定人数。因此,您应该始终更喜欢 RF 3。如果将密钥空间更改为 RF 3,即使一个副本已关闭,您的应用程序也能够以 SERIAL 写入。

另见https://www.ecyrd.com/cassandracalculator/