我是cassandra的新手。
我有一个包含两个节点的集群。我已将Replication因子设置为1.现在,如果一个节点出现故障,我可以插入没有错误且Consistency = ONE的数据。插入后,如果我尝试相同,那么它会给我一个错误
Unavailable: code=1000 [Unavailable exception] message="Cannot achieve consistency level ONE" info={'required_replicas': 1, 'alive_replicas': 0, 'consistency': 'ONE'}
为什么cassandra没有从协调节点读取数据?如果一个节点是UP,那么alive_replicas应该是1,不是吗?
我正在使用cqlsh客户端。
答案 0 :(得分:1)
复制因子1意味着每个数据只存在一次(它不是附加副本的数量,而是总副本的数量)。如果集群具有两个节点且RF = 1,则大约50%的数据将位于node1上,另一半将驻留在node2上。
您可以使用命令验证这一点(检查Owns列下的百分比)
nodetool status your_keyspace_name
现在,如果您的某个节点关闭,那么只有那些存储在活动节点上的密钥才可访问。这适用于读写。因此,影响活动节点的操作将成功,而影响死节点的操作将失败。您可以使用命令
检查哪个节点负责任何给定的分区键nodetool getendpoints your_keyspace your_table your_key
因此,为了回答您的问题,我认为成功写入会影响实时节点,而失败的读取会影响已关闭的节点。