Cassandra与LOCAL_QUORUM写入不一致后读取

问题描述 投票:0回答:1

我们正在运行一个cassandra集群,其本地数据中心为3个节点,并且(我相信)复制因子为3。存在一个远程数据中心,但在我们的查询中未使用它。

更准确地说,我们使用Java库:

  • org.apache.cassandra:cassandra-allcom.datastax.cassandra:cassandra-driver-core两者v3.1.1进行数据库交互
  • info.archinnov:achilles-core v5.1.3用于代码源注释处理-这是指定LOCAL_QUORUM一致性级别的位置

最近,我们遇到了与新行插入的写入一致性后读取有关的问题。

使用LOCAL_QUORUM一致性插入一行。成功插入几毫秒后,一致性为LOCAL_QUORUM的分区键选择的行有时-很少-不成功。找不到行。

从我对LOCAL_QUORUM一致性的天真的理解,如果写了该行然后使用LOCAL_QUORUM一致性(具有相同的数据中心)进行读取,则应该“总是”找到并读取该行。但似乎不是正在发生的事情。

阅读了Cassandra文档之后,我想知道时钟同步问题是否可以解释该问题。例子:没有行的节点可以有一个提前的时钟,因此“无行”可以被认为是最新的值。

确实有可能节点时钟同步问题可以解释行插入(尽管有LOCAL_QUORUM和单个本地数据中心)写入不一致后的读取?如果没有,那么什么可以解释这种一致性问题呢?

java cassandra datastax cassandra-3.0 consistency
1个回答
0
投票

您可以执行以下命令来验证多少个节点具有密钥数据。

./nodetool getendpoints keyspacename tablename 'keyname'
© www.soinside.com 2019 - 2024. All rights reserved.