据说一致性级别 N 定义了确认每个读和写操作所需的副本数量。数量越大,我们得到的结果越一致。
如果我们将该参数定义为 N(N
1个数据中心。成功完成两次并发写入(它们用不同的值更新了相同的键)? 因此,随后的两个并发读取为同一个键返回不同的值?我说得对吗?
答案 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将使您的应用程序变慢。