cassandra - 当节点有 NTP 同步问题时,Cassandra 删除的行返回(重新出现)
问题描述
我有 3 个节点 cassandra 设置,似乎有些节点存在时间同步问题,即有些节点比其他节点早 10 分钟。
CT-Cass2:/root>nodetool status
Datacenter: DC1
===============
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
-- Address Load Tokens Owns Host ID Rack
UN 172.94.1.22 14.15 GB 256 ? db37ca57-c7c9-4c36-bac3-f0cbd8516143 RAC1
UN 172.94.1.23 14.64 GB 256 ? b6927b2b-37b2-4a7d-af44-21c9f548c533 RAC1
UN 172.94.1.21 14.42 GB 256 ? e482b781-7e9f-43e2-82f8-92901be48eed RAC1
我创建了下表。
CREATE TABLE test_users (
userid text PRIMARY KEY,
omavvmon int,
vvmon int
) WITH bloom_filter_fp_chance = 0.01
AND caching = {'keys': 'ALL', 'rows_per_partition': 'NONE'}
AND comment = ''
AND compaction = {'class': 'org.apache.cassandra.db.compaction.TimeWindowCompactionStrategy', 'compaction_window_size': '1', 'compaction_window_unit': 'DAYS', 'max_threshold': '32', 'min_threshold': '4'}
AND compression = {'chunk_length_in_kb': '64', 'class': 'org.apache.cassandra.io.compress.LZ4Compressor'}
AND crc_check_chance = 1.0
AND dclocal_read_repair_chance = 0.1
AND default_time_to_live = 0
AND gc_grace_seconds = 48000
AND max_index_interval = 2048
AND memtable_flush_period_in_ms = 0
AND min_index_interval = 128
AND read_repair_chance = 0.0
AND speculative_retry = '99PERCENTILE';
我可以看到,在客户设置中,一些已删除的记录返回并显示 writetime(omavvmon) 显示的 writetime 比行删除时间晚 10 分钟。我几乎可以肯定,由于时间同步问题,记录正在恢复(因为在更正时间后它没有发生)。但是当我试图在本地重现这个问题时,它永远不会发生。
- 我将 cassandra 系统时间提前 10 分钟并创建行。并且 writetime 显示提前 10 分钟
更新 test_users 设置 omavvmon=1 其中 userid='4444';
- 我将系统时间设置为正常,即慢了 10 分钟。然后我执行删除用户 ID 4444。
据我了解,与第一次创建相比,此删除的写入时间减少了 10 分钟,我应该会看到记录再次返回。但它没有发生。任何人都可以帮助我解释为什么删除的记录会在生产设置中返回而不是在我的本地设置中?还有为什么即使删除的时间戳比插入的时间戳更小,cassandra 也没有在本地显示记录?是不是类似于先删除再插入?
在生产中,我在几个小时后检查,但本地设置我在删除后立即检查。
解决方案
推荐阅读
- java - 可以在 mvnrepository.com 上找到 maven 依赖项,但在 repo.maven.apache.org/maven2/ 上找不到
- css - 有没有办法 :first-of-type::first-letter 除非元素具有给定类型的父级?
- google-apps-script - 修改代码 - 将永久抄送添加到 MailMerge - Google 表格/Google Apps 脚本
- python - 如何使用 SpaCy 解决西班牙语词形还原问题?
- java - 代码在 Java 递归中返回堆栈溢出错误
- asp.net-mvc - IdentityServer4 客户端应用程序:ArgumentNullException:IDX10000:参数“hashAlgorithm”不能是“null”或空对象
- android - 设置firebase时出错,可能会出现未处理的承诺拒绝
- linux - Poco::Net::HTTPSClientSession receiveResponse 总是被异常截断
- ios - 删除、添加或修改 Firestore 文档和分页结果后重新加载 TableView
- c++ - 为什么 unique_ptr 和 shared_ptr 不会使构造它们的指针无效?