Назад | Перейти на главную страницу

Кассандра: понимание фактора репликации

Гипотетическая ситуация:

  1. Настройте кластер cassandra с N узлами.
  2. Создайте пространство ключей и установите replication_factor к 1 и использовать SimpleStrategy.
  3. Добавьте данные.
  4. Удалите 1 узел.

Означает ли это, что 1 / N данных сейчас отсутствует?

Для запросов на чтение да, это значит. Фактор репликации, равный 1, обычно вам не нужен с кассандрой (если у вас нет единственного узла).

Более высокие коэффициенты репликации дадут вам лучшую устойчивость, но основным параметром, определяющим доступность строк, на самом деле является уровень согласованности (который зависит от запроса).

Для запросов на запись ЛЮБОЙ уровень согласованности сделает кластер своего рода запросом, даже если выбранная цель для строки отсутствует (поскольку он будет пытаться использовать хинтинговую передачу обслуживания для фиксации записи позже).

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

Видеть http://wiki.apache.org/cassandra/Operations#Removing_nodes_entirely

Если ваш узел выйдет из строя:

  • для запросов на чтение ваши данные теряются
  • для запросов на запись:
    • для краткой проблемы, такой как сбой сети, ваш кластер (координатор каждого запроса) будет обрабатывать данные этого узла до тех пор, пока он не появится снова, используя функцию HintedHandoff
    • для более длительной или постоянной проблемы вам необходимо реорганизовать свой кластер, чтобы снова обеспечить правильное значение 1 / N, см. http://wiki.apache.org/cassandra/Operations#For_versions_1.2.0_and_above