我是cassandra的新手。
我有一个包含两个节点的集群。我已将复制因子设置为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客户端。
复制因子为1意味着每个数据只存在一次(不是额外副本的数量,而是总副本的数量)。如果一个集群有两个节点,并且RF=1,那么大约50%的数据将位于node1上,另一半将位于node2上。
您可以使用命令(检查Owns列下的百分比)验证这一点
nodetool status your_keyspace_name
现在,如果某个节点关闭,那么只有存储在活动节点上的密钥可以访问。这适用于读写。因此,影响活动节点的操作将成功,而影响死节点的操作则将失败。您可以使用命令检查哪个节点负责任何给定的分区密钥
nodetool getendpoints your_keyspace your_table your_key
因此,为了回答您的问题,我假设成功的写入会影响活动节点,而失败的读取会影响关闭的节点。