卡桑德拉可能的节点丢失

时间:2018-12-26 18:27:43

标签: cassandra cluster-computing replication sharding

我对Cassandra还是陌生的,因此找到了这个网站
https://www.ecyrd.com/cassandracalculator/
不知道它有多准确,但是我有一个误会。 考虑以下示例:

  • 集群大小8
  • 复制因子5
  • 一读关注
  • 写一个关注

结果是,我可以丢失4个节点而不影响应用程序。有人知道什么计算使我们得出这个结果吗?提前谢谢。
附言我想指出,除了“我可以在不影响应用程序的情况下松开多少个节点”之外,我对其他任何方面都不感兴趣。我要寻找的答案不是一致性如何工作,或者不是其他任何事情,而是排在后面的方程式描述的结果是“我可以在不影响应用程序的情况下松开多少个节点”以及为什么。

2 个答案:

答案 0 :(得分:1)

CL.ONE总是会导致数据丢失的可能性。例如:作为协调者的副本获取请求,在本地写入并将ack发送给客户端。如果该系统在流向其他副本的数据发送之前被流星击中,则会丢失数据。

如果使用local_quorum或quorum,则RF = 5时,您可以使副本集的2个节点发生故障而没有任何数据丢失(不包括不遵循维修预期操作实践的情况)。但是,使用CL.ONE,即使5个副本中的4个副本死亡,您的应用程序仍然可以运行,在某些情况下,可用性比持久性和一致性更重要。我建议始终从仲裁开始,然后仅在性能需求无法满足时更改您的一致性。

答案 1 :(得分:0)

您还可以根据要求在查询级别调整一致性。 选择*从用户那里WHERE state ='ABC'使用一致性仲裁;是的,CL ONE提供了比仲裁更好的可用性,但是仲裁将为您提供更一致的数据。