首页 文章

在2节点cassandra集群中,如果RF = 1并且一个节点关闭,我可以用CL = 1写入但不能读取

提问于
浏览
0

我是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客户端 .

1 回答

  • 1

    复制因子为1意味着每个数据只存在一次(它不是附加副本的数量,而是总副本的数量) . 拥有一个具有两个节点且RF = 1的集群,大约50%的数据将位于node1上,另一半将驻留在node2上 .

    您可以使用该命令验证这一点(检查Owns列下的百分比)

    nodetool status your_keyspace_name
    

    现在,如果您的某个节点已关闭,则只有那些存储在活动节点上的密钥才可访问 . 这适用于读取和写入 . 因此,影响活动节点的操作将成功,而影响死节点的操作将失败 . 您可以使用该命令检查哪个节点负责任何给定的分区键

    nodetool getendpoints your_keyspace your_table your_key
    

    因此,为了回答您的问题,我认为成功写入会影响实时节点,而失败的读取会影响已关闭的节点 .

相关问题