2012-02-13 31 views
3

我对卡桑德拉很新,我不确定我是否正确地理解了一切,所以我希望有人能帮助我。Cassandra:集群如何处理死亡节点?

这是我的系统:NetworkTopologyStrategy(在相同的所有节点:

  • 卡桑德拉0.8
  • 有3个节点
  • 复制策略的复制因子一个密钥空间集群DC)
  • 使用twitter cassandra gem连接到群集的导轨金属应用程序[1]
    • 读一致性:ONE
    • 写consitency:任何

当一个节点出现故障,我很安静确信这一点:

  • 我应该能够如果我使用读取一致性级别ONE,则从密钥空间读取记录。
  • 我应该能够写入与任何

这个写一致性级别的密钥空间是什么,我不明白:

  • 以上succeede的行动,但前提是我手动删除死节点的令牌
  • 我的集群不应该像预期的那样死活节点吗?这不是cassandra的全部内容:高可用性?

我在gem的代码中挖了一遍,它看起来好像cassandra集群告诉gem它可以在dead节点上找到一条记录(实际上是down)。所以gem失败并且出现异常,无法连接到死节点。

所以我不知道如果我完全误解了一些东西,我的cassandra设置是错误的,或者如果cassandra红宝石宝石是问题(我不认为)。

THX,西蒙

[1] https://github.com/twitter/cassandra

回答

0

是为你死节点描述集群应该工作。

我不熟悉ruby或ruby客户端,但听起来我更倾向于认为客户端正尝试向死节点发送请求,这会导致“无法连接”类型的异常。如果没有足够的节点满足特定查询的一致性要求,Cassandra会抛出一个UnavailableException。

ruby​​客户端在做什么类型的池,你确定它不是试图发送查询到一个关闭的节点?假设ruby客户端具有某种连接池,在实现节点关闭之前,它可能必须至少看到一个失败的查询。

相关问题