我们运行的是一个cassandra集群,本地数据中心有3个节点,(我相信)复制因子是3。存在远程数据中心,但在我们的查询中没有使用。
更确切地说,我们使用java库:
org.apache。cassandra:cassandra-all coupled 使用com.datasax。cassandra:cassandra-driver-core both 用于数据库交互的v3.1.1
信息。archinnov:achilles-core v5.1.3 对于源代码注解处理-这是指定本地仲裁一致性级别的地方
最近,我们遇到了与新行插入的读写一致性相关的问题。
使用本地仲裁一致性插入行。在成功插入几毫秒后,具有本地仲裁一致性的行select by partition key有时-很少-不成功。找不到行。
从我对本地仲裁一致性的幼稚理解来看,如果使用本地仲裁一致性(使用相同的数据中心)写入然后读取行,则应该“始终”找到并读取它。但这似乎不是正在发生的事情。
在阅读了cassandra文档之后,我想知道时钟同步问题是否可以解释这个问题。示例:没有行的节点可能有一个提前的时钟,因此“no row”可能被认为是最新的值。
节点时钟同步问题是否确实有可能解释行插入的先读后写不一致性(尽管存在本地仲裁和单个本地数据中心)?如果不是,有什么能解释这种一致性问题?
1条答案
按热度按时间vnjpjtjt1#
可以执行下面的命令来验证,有多少节点有密钥的数据。