Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cassandra:集群如何处理死节点?_Cassandra - Fatal编程技术网

Cassandra:集群如何处理死节点?

Cassandra:集群如何处理死节点?,cassandra,Cassandra,我对卡桑德拉很陌生,我不确定自己是否理解正确,所以我希望有人能帮助我 这是我的系统: 卡桑德拉0.8 具有3个节点的集群 复制因子为3的键空间 复制策略:NetworkTopologyStrategy(同一DC中的所有节点) 使用twitter cassandra gem连接到集群的rails金属应用程序[1] 阅读一致性:一 书写一致性:任何 当一个节点发生故障时,我可以肯定: 如果使用读取一致性级别1,我应该能够从键空间读取记录 我应该能够以任意的写入一致性级别写入密钥空间 这是

我对卡桑德拉很陌生,我不确定自己是否理解正确,所以我希望有人能帮助我

这是我的系统:

  • 卡桑德拉0.8
  • 具有3个节点的集群
  • 复制因子为3的键空间
  • 复制策略:NetworkTopologyStrategy(同一DC中的所有节点)
  • 使用twitter cassandra gem连接到集群的rails金属应用程序[1]
    • 阅读一致性:一
    • 书写一致性:任何
当一个节点发生故障时,我可以肯定:

  • 如果使用读取一致性级别1,我应该能够从键空间读取记录
  • 我应该能够以任意的写入一致性级别写入密钥空间
这是我不明白的:

  • 上述操作成功,但前提是我手动删除死节点的令牌
  • 对于死区节点,我的集群不应该像预期的那样工作吗?这不是cassandra的全部内容吗:高可用性
我翻遍了gem的代码,看起来如果cassandra集群告诉gem它可以在死节点上找到一条记录(它实际上已关闭)。因此,gem出现异常,无法连接到死节点

所以我不确定我是否完全误解了什么,我的cassandra设置是错误的,或者cassandra ruby gem是否是问题所在(我不这么认为)

谢谢,西蒙


[1]

是的,您的集群应该按照您描述的使用死区节点的方式工作

我不熟悉ruby或ruby客户机,但我觉得您的客户机更可能试图向死节点发送请求,这将导致“无法连接”类型的异常。如果没有足够的节点满足某个查询的一致性要求,Cassandra将抛出一个不可用的异常

ruby客户端执行什么类型的池,并且您确定它没有尝试向关闭的节点发送查询吗?假设ruby客户机有某种连接池,那么在它意识到某个节点已关闭之前,它可能必须至少看到一个失败的查询