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

jogvjijk  于 2021-06-10  发布在  Cassandra
关注(0)|答案(2)|浏览(358)

据说一致性级别n定义了确认每个读写操作所需的副本数量。这个数字越大,我们得到的结果就越一致。
如果我们将该参数定义为n(n<m/2),其中m是簇大小,是否意味着可能出现以下情况:
1个数据中心。两个并发写入成功发生(它们用不同的值更新了同一个键)?因此,两个后续的并发读取为同一个键返回不同的值?我说的对吗?

knsnq2tg

knsnq2tg1#

是的,我们可以根据读写要求调整一致性。quorum是针对单个dc的cassandra的建议一致性级别。我们可以从以下公式计算:quorum=n/2+1,其中n是副本数。我们可以从下面设置一致性命令一致性[级别]
有关可调一致性的更多详细信息,请参阅下文。
https://medium.com/dugglabs/data-consistency-in-apache-cassandra-part-1-7aee6b472fb4httpshttp://docs.datastax.com/en/cassandra/3.0/cassandra/dml/dmlaboutdataconsistency.html
https://docs.datastax.com/en/cql/3.3/cql/cql_reference/cqlshconsistency.html

stszievb

stszievb2#

在cassandra中,很可能不同的客户机应用程序正在更新不同节点上相同密钥的值。您可以通过调整一致性级别来限制这一点。
一致性级别始终取决于您决定的复制因子。
如果rf=5个节点dc中的3个,则一致性级别仲裁或本地\u仲裁表示3个节点中有2个具有副本。
调整后,以下任何组合都应为您提供正确的数据:

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

您可以根据应用程序的负载调整应用程序中的一致性级别。
根据我的说法,第3个本地仲裁应该工作得更好,因为有时节点可能处于高负载下,或者可能已关闭。您的应用程序不会受到影响。
万一,你写的比读的多;write cl=all将使您的应用程序变慢。

相关问题