我有 3 个虚拟 Cassandra 节点集群。节点 1、节点 2 和节点 3。
我已经编写了一个小的 python 代码来将数据批量加载到其中。
第一次只有三个节点中的两个节点在线可用,Node1 和 Node2 当我执行 python 代码时
session.default_consistency_level = 2
我得到了错误:
cassandra.Unavailable: Error from server: code=1000 [Unavailable exception] message="Cannot achieve consistency level TWO" info={'consistency': 'TWO', 'required_replicas': 2, 'alive_replicas': 1}
之后我将我的第三个节点(Node3)联机并执行 python 程序,它执行成功。
据我了解,一致性级别 = 2意味着每次 3 个节点中至少有 2 个节点可用。
谢谢!
一致性级别是指所需的副本数,但存在的总副本数与节点数无关。它由您设置
Replication_Strategy
。如果您针对此键空间的策略只有 2 个副本,那么在很多情况下 CL 为 2 会失败。对于节点 A、B 和 C
想象一下,你想要的数据已经被复制到 A 和 B。
但是只有A和C还活着。即使有 2 个节点处于活动状态,您也只能获得一个副本。