我正在使用具有标准列类型和组合类型键的cassandra列族。 cassandra集群有3个节点,复制因子为3.数据从列族中插入,更新和删除。cassandra列数据出现长时间延迟和不正确的时间戳
例如,可以说柱族的当前状态是
Row X
column=1:a, value=v1, timestamp=1000
column=1:b, value=v2, timestamp=1010
column=2:a, value=v3, timestamp=1020
许多更新发生在一段时间内其中Row X
列可以得到更新,有时新行得到插入或删除。
我正在观察的问题是,假设说与密钥2列:a更新在timestamp=1030
值为v4。当我使用cassandra-cli观察数据时,即使在几个小时之后,它也不会显示键2:a。后来,键1:a,1:b被删除,并最终 - 在几个小时后,键2:a出现,但有一个时间戳早于1030 - 比如说990.
我读到,如果有时钟跨节点的差异,那么具有最新时间戳的作者写其他人。如果它们是相同的,那么较高的值将按照字典顺序排列在较低的值上。但是,就我而言,只有一个编写器进程更新了列族,并且编写器仅更新了密钥2:a并且稍后删除了1:a和1:b。所以没有多个作家为同一个关键。作者是多线程的,因此线程触摸各种键,但不是相同的键。
所以我的问题是:
- 下,我们能有什么情况下键显示不出来,甚至写发生后很长一段时间?
- 什么会导致密钥的时间戳变得混乱?在上面的例子中,2:a应该有1030的时间戳,但是当它最终被看到时显示为990。
有人可以分享一些关于什么可能是错的,或如何解决问题的指针或任何有用的文章来分析问题?