什么是对Cassandra可调一致性的正确理解和理解?

时间:2019-02-25 13:24:54

标签: cassandra

据说一致性级别 N 定义了确认每个读和写操作所需的副本数量。数量越大,我们得到的结果越一致。

如果我们将该参数定义为 N(N ,其中 M 是簇大小,这是否意味着以下情况是可能的:

1个数据中心。成功完成两次并发写入(它们用不同的值更新了相同的键)? 因此,随后的两个并发读取为同一个键返回不同的值?我说得对吗?

2 个答案:

答案 0 :(得分:0)

是的,我们可以根据读写需求调整一致性。对于单DC,建议对Cassandra使用Quorum一致性级别。我们可以从下面的Quorum = N / 2 + 1进行计算,其中N是副本数。我们可以从下面的命令中设置一致性 一致性[级别]

有关可调一致性的更多详细信息,请参阅下文。

https://medium.com/dugglabs/data-consistency-in-apache-cassandra-part-1-7aee6b472fb4 https://docs.datastax.com/en/cassandra/3.0/cassandra/dml/dmlAboutDataConsistency.html

https://docs.datastax.com/en/cql/3.3/cql/cql_reference/cqlshConsistency.html

答案 1 :(得分:0)

在Cassandra中,不同的客户端应用程序很可能在不同的节点上更新同一密钥的值。您可以始终通过调整一致性级别来限制它。

一致性级别始终取决于您确定的复制因子。

如果来自5个节点DC的RF = 3,则一致性级别QUORUM或LOCAL_QUORUM表示3个节点中有2个具有副本。

调整后,以下任何组合都应为您提供正确的数据

WRITE=ALL READ=ONE  
WRITE=ONE READ=ALL  
WRITE=LOCAL_QUORUM READ=LOCAL_QUORUM  

您可以根据应用程序的负载调整应用程序中的一致性级别。

根据我的说法,第3条LOCAL_QUORUM应该会更好地工作,因为有时某个节点可能处于高负载状态,或者可能处于关闭状态。您的应用程序不会受到影响。

以防万一,您的写操作多于READ; WRITE CL = ALL将使您的应用程序变慢。