cassandra - cassandra 可能的节点丢失
问题描述
我对 Cassandra 很陌生,发现这个网站
https://www.ecyrd.com/cassandracalculator/
不确定它有多准确,但我有一个误解。考虑以下示例:
- 集群大小 8
- 复制因子 5
- 阅读关注一
- 写关注一
结果,我知道我可以在不影响应用程序的情况下丢失 4 个节点。有谁知道是什么计算导致我们得出这个结果?提前致谢。
PS我想说我对任何其他方面都不感兴趣,除了“我可以在不影响应用程序的情况下松散多少节点”。我正在寻找的答案不是一致性是如何工作的,或者其他任何东西,而仅仅是描述结果背后的方程式是什么,即“我可以在不影响应用程序的情况下松散多少节点”以及为什么。
解决方案
CL.ONE 总是会导致数据丢失的可能性。举个例子:作为协调器的副本获取请求,在本地写入并向客户端发送 ack。如果该系统在向其他副本发送数据之前被流星击中,则数据丢失。
如果您使用 local_quorum 或 quorum,那么在 RF=5 的情况下,您可以让副本集的 2 个节点发生故障而不会丢失任何数据(不包括未遵循预期的修复操作实践等情况)。但是,使用 CL.ONE,即使 5 个副本中有 4 个死亡,您的应用程序仍然可以运行,在某些情况下,可用性比持久性和一致性更重要。我建议始终从仲裁开始,然后仅在未满足性能要求的可用性时才更改一致性。
推荐阅读
- javascript - 如何手动将 Linking.getInitialUrl 设置为空
- php - 更新我的证书后出现 SMTP 错误(SSL3_GET_SERVER_CERTIFICATE:证书验证失败)
- javascript - MongoDb 更新到数组
- ramda.js - Ramda 从数组内的嵌套对象中获取值
- reactjs - 离子标签栏更改 URL 但未呈现页面
- shell - 如何将参数传递给Dockerfile中的shellscript
- python - 使用 flasgger 库在 Python 中 Swagger 更改基本 URL
- c# - System.TypeLoadException 发生在具有不同版本的重复依赖项上
- electron - 如何在 Electron Js 中正确嵌入 Google Data Studio 报告?
- pandas - Pandas - 将行拆分为多列时出错