[英]Cassandra tunable consistency with multiple clients
我一直在看Datastax Cassandra教程,并且对可调一致性有疑问。 他们显示的等式是if (nodes_read + nodes_written) > replication_factor
,那么我们具有直接一致性。 仅当有一个客户端连接到数据库时,这才似乎成立。 如果我们有多个客户,我看不出这个等式如何仍然成立。 这里是否假设我们只有一个客户? 谢谢。
不,这与客户数量无关。
例如,只要您正在阅读和编写仲裁,就可以保证您保持一致。 请记住,在卡桑德拉(Cassandra)中,最后一次胜利。 因此,换句话说,保证您不会读取过时的数据。
我很少看到一种或法定人数以外的配置。 诸如写1读ALL之类的事情在理论上是一致的,但是如果您失望了,那么值得付出什么一致性呢?
另外,请确保您运行NTP。
客户数量无关紧要。 一致性取决于数据而不是客户端或客户端数量。
如果有100个客户端分别基于(nodes_read + nodes_write)> plication_factor执行写入和读取,那么在这种情况下,您仍然可以确定所有客户端都将立即看到一致性。
您为什么认为许多客户会改变方程式?
您将看到立即一致性的原因之一是:
为了阐明您对多个节点的评论,请考虑两种情况。
情况1。假设有3个节点,复制因子为3
假设客户端1正在使用CL = 2写入数据。这将确保仅在2个节点上写入成功后才能写入成功
现在,如果客户端执行CL = 2的读取,则至少一个写入的节点将进行答复。 因此立即获得一致性。
情况2:
现在,问题浮出水面了,如果您在没有数据的节点之一上执行读取该怎么办。
无陈旧数据
情况3:1.假设在CL = 3的情况下执行写操作。 在这种情况下,只有在三个副本节点中都有数据时,我们才能成功。
现在,问题浮出水面了,如果您在没有数据的节点之一上执行读取该怎么办。 但是,由于CL为3,因此所有节点都将具有成功写入的数据
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.