CL Quorum 是否可以进行脏读?

Is it possible to have dirty reads with CL Quorum?

基于

http://docs.datastax.com/en/cassandra/2.0/cassandra/dml/dml_config_consistency_c.html

写入一致性

The consistency level determines the number of replicas on which the write must succeed before returning an acknowledgment to the client application

读取一致性:

The consistency level specifies how many replicas must respond to a read request before returning data to the client application.

这意味着,如果我在同一个客户端应用程序(并且可能是同一个线程)中将 CL 指定为读取和写入的 Quorum,则我在写入(再次, with CL = Quorum) 确保我得到最新的数据。

但是我不太清楚的是:这是否也适用于同一应用程序中的不同进程和不同线程?

是否可以指定 CL = Quorum,但仍然有遗漏更新(旧数据)或脏读?

更新:

澄清一下,我不是在讨论 CL QUORUM 结束之后。问题更多是沿着这些方向:

如果在写入 (@QUORUM) 的中间,连接到同一集群的另一个进程尝试读取 CL = QUORUM 的同一分区,是否有可能读取旧数据?

假设写入尚未完成对所有副本的写入,因此 CL 尚未得到满足并且发生读取。是否有可能写入仅写入一个节点(并且正在复制过程中),因此,当读取(CL = QUORUM)进入时,它会读取较旧的数据?节点是否知道它们应该 "wait" 直到写入完成

非常感谢,

只要读取和写入都按 QUORUM 完成,它就会保持一致。由于超过一半的人看到了写入,超过一半的人正在返回读取,所以保证会有一些重叠。

有一个官方公式可以知道您是否会实现即时一致性(= 没有停滞的数据) 如果 NUM_READ + NUM_WRITE > 复制因子则立即一致性

因此,如果 RF 为 3,quorum = 2,那么如果读写都 = QUORUM,则 2 + 2 > 3 = 立即一致

但是如果你读 = QUORUM 并且写 = ONE 然后 2 + 1 = 3 ,你只会得到最终的一致性