java - 当我使用 CQL :"Unable to complete request: one or more nodes were unavailable"时,Cassandra 报告 :"select * from User"

标签 java python cassandra cql

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/

相关文章:

Cassandra 版本升级

Java:如何创建 Class<T> 参数?

java - 多线程生成多个线程以及如何等待子线程

java - PUT 操作的 Android JSON api 问题

java - Eclipse - 无法在本地主机上发布 Tomcat8.0 服务器的服务器配置

python - 调用打印功能,避免换行

python - 如何通过读取 .txt 文件为每个键创建具有多个 'lists' 的 Python 字典?

python - 从文本文件编码表情符号(Python)的最佳和干净的方法

JavaFX:如何在TableView中选择和删除多个对象

spring - 我应该在Spring Batch流程中的哪里索引项目?