Cassandra中的最终一致性意味着什么?

axzmvihb  于 8个月前  发布在  Cassandra
关注(0)|答案(5)|浏览(60)

当单个集群中的节点不包含相同数据的副本但数据分布在节点之间时,Cassandra中的最终一致性的含义是什么?现在,因为一个单一的数据记录在一个单一的地方(节点)。为什么Cassandra不返回那个记录位置的最近值呢?在这种情况下,多个副本是如何产生的?

d6kp6zgx

d6kp6zgx1#

Cassandra的一致性是可调的什么可以调整?

  • 同意读取数据所需的节点数.称之为R
  • 就写入数据达成一致所需的节点数.称之为W

在3个节点的情况下,如果我们选择2R和2W,那么在读取期间,如果2个节点同意一个值,则该值为真值。第三个可能具有或可能不具有相同的值。
在写入的情况下,如果选择2W,则如果数据被写入到2个节点,则被认为是足够的。这种模式是一致的。
如果R + w <= N,其中N是节点数,则最终将是一致的。
Cassandra为每个列和列的每个字段维护一个时间戳,以最终保持一致。有一个后台机制来达到一致的状态。但就像我说的,如果R + W > N,那么它是一致固体。这就是为什么一致性在Cassandra中被认为是可调的。

8oomwypt

8oomwypt2#

由客户端决定适当的一致性级别(零、任何、一、quoram或全部)。(一致性级别根据您的复制因子控制读和写行为。)在单节点集群中,一致性级别any、one、quorom和all是等效的。

3b6akqbq

3b6akqbq3#

即使复制因子= 1,一致性也不一定是立即的,因为写入在您发送它们的节点上缓冲,因此不一定立即发送到负责该键的节点。
但这取决于您选择的一致性级别。
大多数情况下,Cassandra的用例是复制因子> 1,这是一致性成为更多问题的地方。RF=3似乎是一个常见的设置(因为它允许在一个节点不可用的情况下进行仲裁读/写)

e4yzc0pl

e4yzc0pl5#

Cassandra倾向于牺牲可用性的延迟和一致性。它是“最终一致”,这是一种用于分布式设置的NoSQL数据库一致性模型。与其保持严格的一致性(这可能会在大规模情况下降低速度),最终的一致性可以实现高可用性,但代价是您的每个数据示例不能立即在所有服务器上同步。

相关问题