根据datastax文章,可以保证强一致性
如果,R + W > N
在哪里
R是读操作的一致性级别
W为写操作的一致性级别
N 是副本数
这里的强一致性是什么意思呢?这是否意味着“每次”从数据库给出查询响应时,响应将“始终”是最后更新的值?如果cassandra中保持了强一致性的条件,那么,是不是就不会出现返回数据不一致的情况呢?简而言之,强一致性是否意味着100%一致性?
Edit 1
添加一些关于 Cassandra 即使 R+W>RF 也可能不一致的场景的附加材料
- Quorum CL 写入失败 https://stackoverflow.com/questions/30935174/what-will-happen-if-write-failed-in-cassandra-cluster-when-using-quorum-cl
- Cassandra 的最终一致性 https://blog.scottlogic.com/2017/10/06/cassandra-eventual-consistency.html
Cassandra 具有可调的一致性,您可以选择一些权衡。
R + W > N - 这仅仅意味着您的往返中必须有一个重叠节点,该节点具有可用的实际数据和最新数据以保持一致。
例如,如果您在 CL.ONE 处写入,则需要在 CL.ALL 处读取,以确保获得一致的结果:N+1 > N - 但您可能不想要 CL.ALL,因为您无法容忍单个节点故障在您的集群中。
通常您可以在读写时选择 CL.QUORUM 以确保一致性并容忍节点故障。例如,在 RF=3 时,QUORUM 需要 (3/2)+1=2 个可用节点,因此 R+W>N 将是 4>3 - 您的请求是一致的,并且您可以容忍单个节点故障。
要记住一件事 - 在所有节点(cassandra 和应用程序)上拥有同步时钟非常重要,您将希望 ntp 启动并运行。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)