使用 Java 驱动程序为 Apache Cassandra 设置一致性级别

Setting Consistency Level using Java driver for Apache Cassandra

我正在尝试使用 java 驱动程序测试设置一致性级别。我创建了一个测试键空间,table 设置为复制因子 = 3(出于测试目的,设置了一个节点 1 集群)。我使用 CL set at ALL 从 java 驱动程序插入,然后尝试查询设置 CL at ALL。预期的行为是它会抱怨没有足够的副本可用但它根本不会抱怨。我尝试使用 CQLSH CONSISTENCY 命令进行操作,效果非常好。我做错了什么吗?

简短摘要:复制因子描述了您的数据存在多少副本。一致性级别描述了客户端看到的行为。也许有更好的分类方法。

Cassandra 中的一致性级别可以配置为管理可用性与数据准确性。

您可以在集群、数据中心或每个单独的读取或写入操作上配置一致性。参与节点之间的一致性可以全局设置,也可以在 per-operation 的基础上进行控制。

对于客户端应用程序编程,请使用适当的驱动程序设置一致性级别。例如,使用 Java 驱动程序,使用 setConsistencyLevel 调用 QueryBuilder.insertInto 以设置 per-insert 一致性级别。

你没有做错你的情况会发生什么:-

CONSISTENCY LEVEL 'ALL' say : - A write must be written to the commit log and memtable on all replica nodes in the cluster for that partition.

因为您只有 1 个节点设置,并且如果您在本地查询(即在安装了 Cassandra 的同一台机器上),那么数据已经 present/persisted 在您的节点上并且写入和读取速度足够快所以你不会得到任何错误。

为了最好地分析场景,您可以转到下面 Link : -

https://www.ecyrd.com/cassandracalculator/

希望对您有所帮助。