Проблема репликации данных Кассандры

У меня кластер кассандры из 2 узлов с коэффициентом репликации 2 и AutoBootStrap = true. Все хорошо во время запуска и оба узла видят друг друга. Назовем эти узлы A и B.

Добавьте набор ключей и столбцов (давайте назовем этот набор K1) для cassandra через узел A.Подключитесь к узлу A и прочитайте обратно набор K1. То же самое на узле Б. Успех - хорошоПроцесс убийства Кассандры на Узле Б.Добавьте набор K2 через A.Подключитесь к узлу A и прочитайте набор K2. ХорошоПерезапустите процесс Cassandra на узле B.Попробуйте прочитать все ключи из B ... установите K1, установите K2 MISSING. (Даже через 30 минут)Добавьте K3 к A / B.Считать все ключи из A - возвращает набор K1, K2, K3Считать все ключи из B - возвращает набор K1, K3.

B никогда не синхронизирует набор K2 ... (прошло более 12 часов) Почему узел B не видит набор K2 ... у кого-нибудь есть идеи?

Добавленная информация :

Хорошо ... это была проблема. Значение read_consistency_level было установлено в 1 по умолчанию.

Поэтому, когда мы запрашиваем узел B для набора K2, и у него его нет (когда он должен из-за коэффициента репликации = 2), он сразу же возвращается с ошибкой «Not found».

Однако если мы используем согласованность чтения как QUORUM или ALL, то B вынужден запрашивать A, который затем возвращает правильное значение, и B синхронизирует этот ключ (сохраняет его локально).

Это приводит к другой проблеме - это означает, что когда узел B появляется, он не синхронизирует все данные с узла A, даже после долгого времени. Теперь, если узел А выходит из строя, как мы можем получить доступ к этим несинхронизированным данным? (Я только что проверил, что мы не можем)

Я предполагаю, что должен быть способ принудительной синхронизации данных. В выводе терминала я вижу ИНФОРМАЦИЮ, что при появлении B произошла подсказка о передаче 15 строк от A до B, но B не имеет этих строк локально (потому что мы все еще не можем прочитать ее из B с уровнем согласованности ONE). Что тут происходит?

Ответы на вопрос(1)

Ваш ответ на вопрос