У меня есть 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';
Я вижу, что в настройках клиента возвращаются некоторые из удаленных записей и отображается время записи (omavvmon), которое показывает время записи на 10 минут позже, чем время удаления строки. Я почти уверен, что записи возвращаются из-за проблемы синхронизации времени (потому что после исправления времени это не происходит). Но когда я пытался воспроизвести эту проблему локально, это никогда не происходило.
- Я установил системное время кассандры на 10 минут вперед и создал строку. и время записи показывает 10 минут вперед
обновить test_users set omavvmon = 1, где userid = '4444';
- Я установил системное время на нормальное значение, которое на 10 минут медленнее. Затем я выполняю удаление идентификатора пользователя 4444.
Как я понимаю, это удаление на 10 минут меньше времени записи по сравнению с первым созданием, и я должен увидеть, что записи возвращаются снова. Но этого не происходит. Может ли кто-нибудь помочь мне объяснить, почему удаленные записи возвращаются в производственной настройке, а не в локальной? Кроме того, почему Кассандра не показывает запись локально, даже если удаление имеет меньшую отметку времени по сравнению со вставкой? Разве это не похоже на удаление и вставку?
В производственном процессе я проверяю через несколько часов, но при локальной установке проверяю сразу после удаления.