Как убедиться, что данные реплицируются не раз в Кассандре - PullRequest
0 голосов
/ 28 июня 2018

Если, скажем, RF = 3, в одном центре обработки данных с 5 узлами, то как я могу узнать, где именно находятся мои данные, в каком узле для любого keyspace.tablename и как доказать, что данные точно реплицированы на 3 узлах.

Я пробовал различные команды nodetool, но ни одна из них не дает мне точного результата или того, что я пытаюсь увидеть.

1 Ответ

0 голосов
/ 09 июля 2018

Это можно доказать, используя вставки и запросы с различными уровнями согласованности (CL) со стороны клиента (например, cqlsh). Я объясню:

  1. Создать пространство ключей с RF = 3 -> Создать таблицу
  2. INSERT данные с CL=ALL (это означает, что все 3 реплики должны подтвердить, что запись прошла успешно)
  3. Пока все узлы выполняют запрос (SELECT) для данных, используя CL=ALL (все 3 реплики должны отправить ответ, чтобы запрос считался успешным)
  4. Стоп C * на 1 из узлов
  5. Когда 1 узел не работает (DN состояние в nodetool status), запрос (SELECT) для данных с использованием CL=ALL (все 3 реплики должны отправить ответ, чтобы запрос считался успешным).

    а. Если запрос выполнен успешно, все 3 реплики все еще работают, и вам нужно остановить другой узел C *.

    б. В случае сбоя запроса установите для CL значение CL=QUORUM (только 2 из 3 реплик должны отправить ответ, чтобы запрос считался успешным), и выполните запрос еще раз.

Вы можете продолжить эту последовательность с CL=ONE и даже CL=ANY.

Вы можете узнать больше о cqlsh и о том, как изменить CL здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...