Кассандра удалила строки, возвращающиеся (вновь появляющиеся), когда узлы имеют проблему синхронизации NTP - PullRequest
0 голосов
/ 18 ноября 2018

У меня есть 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 минут позже, чем время удаления строки. Я почти уверен, что записи возвращаются из-за проблемы синхронизации времени (потому что после исправления времени это не происходит). Но когда я пытался воспроизвести эту проблему локально, это никогда не происходило.

  1. Я установил системное время кассандры на 10 минут вперед и создал строку. и время записи показывает 10 минут вперед

обновить test_users set omavvmon = 1, где userid = '4444';

  1. Я установил системное время на нормальное значение, которое на 10 минут медленнее. Затем я выполняю удаление идентификатора пользователя 4444.

Как я понимаю, это удаление на 10 минут меньше времени записи по сравнению с первым созданием, и я должен увидеть, что записи возвращаются снова. Но этого не происходит. Может ли кто-нибудь помочь мне объяснить, почему удаленные записи возвращаются в производственной настройке, а не в локальной? Кроме того, почему Кассандра не показывает запись локально, даже если удаление имеет меньшую отметку времени по сравнению со вставкой? Разве это не похоже на удаление и вставку?

В производственном процессе я проверяю через несколько часов, но при локальной установке проверяю сразу после удаления.

...