Cassandra工作在3个节点的集群模型中。当所有节点都“UP”时,我在cqlsh中使用cql“select * from User”,Cassandra返回正确的结果。但是当一个节点死亡后,当我使用“select ” 再次,没有结果返回,但报告:“无法完成请求:一个或多个节点不可用”。 我转向使用 cassandra-cli 命令:“get Users”,它返回了正确的数据,没有任何错误。 有什么想法吗?
最佳答案
我预计当您使用 CQL 时,您会收到一个一致性级别为“ALL”的请求。在这种情况下,它将在返回之前等待所有服务器(托管该节点的副本)的答复。当一个节点发生故障时,它会失败,因为它无法联系到发生故障的节点。
当您通过 Cassandra-cli 执行此操作时,我希望一致性级别默认为“QUORUM”或“ONE”或“ANY”,因此即使一个副本已关闭,也会很高兴地返回数据。
关于java - 当我使用 CQL :"Unable to complete request: one or more nodes were unavailable"时,Cassandra 报告 :"select * from User",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14250664/