当单个集群中的节点不包含相同数据的副本但数据分布在节点之间时,Cassandra 中的最终一致性意味着什么。现在,由于单个数据记录在一个地方(节点)。为什么 Cassandra 不从那个单一的记录位置返回最近的值?在这种情况下如何产生多个副本?
最佳答案
Cassandra 的一致性是可调的。可以调什么?
* 就读取数据达成一致所需的节点数..称之为 R
* 就写入数据达成一致所需的节点数..称之为 W
在 3 个节点的情况下,如果我们选择 2R 和 2W .. 那么在读取期间,如果 2 个节点同意一个值,则该值为真值。第三个值可能相同也可能不同。
在write的情况下,如果选择2W,那么如果数据写入2个节点,就认为足够了。这个模型是一致的。
如果 R + w <= N 其中 N 是节点数,它将最终保持一致。
Cassandra 为每一列和列的每一字段维护一个时间戳,最终变得一致。后台有一种机制可以达到一致的状态。
但就像我说的,如果 R + W > N,那么它是一致的。这就是为什么一致性在 Cassandra 中被认为是可调的。
关于database - Cassandra 中最终一致性的含义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4584353/