当单个群集中的节点不包含相同数据的副本但数据在节点之间分布时,Cassandra中的最终一致性是什么意思。现在,因为在一个地方(节点)记录了一个数据。为什么Cassandra不会从那个单一的记录中返回最近的价值?在这种情况下如何产生多个副本?
答案 0 :(得分:2)
即使复制因子= 1,一致性也不一定是立即的,因为写入在您发送给它的节点上缓冲,因此不一定立即发送到负责该密钥的节点。
但这取决于您选择的一致性级别。
大多数情况下,Cassandra的用例是复制因子> 1,这是一致性成为问题的地方。 RF = 3似乎是一个常见的设置(因为它允许Quorum读/写,一个节点不可用)
答案 1 :(得分:2)
Cassandra的一致性是可调的。什么可以调整?
*同意读取数据所需的节点数量。称之为R
*同意写入数据所需的节点数量。称之为W
在3个节点的情况下,如果我们选择2R和2W ..那么在读取期间,如果2个节点同意一个值,那就是真值。第3个可能有也可能没有相同的值
在写入的情况下,如果选择2W,那么如果将数据写入2个节点,则认为足够了。这个模型是一致的
如果R + w <= N,其中N是节点数,则它最终是一致的
Cassandra维护每列和每列字段的时间戳,最终变得一致。背景中有一种机制可以达到一致的状态
但就像我说的,如果R + W&gt; N,那么它是一致的。这就是Cassandra认为一致性可调的原因。
答案 2 :(得分:1)
由客户决定适当的一致性级别(零,任何,一,quoram或全部)。 (一致性级别根据复制因子控制读取和写入行为。) 在单个节点集群中,一致性,一个,每个quorom和所有的一致性等级。
答案 3 :(得分:1)
答案 4 :(得分:0)
Cassandra倾向于降低可用性的延迟和一致性。它是“最终一致的”,用于分布式设置的NoSQL数据库一致性模型。最终的一致性可以实现高可用性,而不是保持严格的一致性,从而实现高可用性,而不是立即在所有服务器上同步,而不是立即在所有服务器上同步。