Фактор репликации и уровень согласованности Cassandra

Edge для частного облака версии 4.17.05

О коэффициенте репликации Cassandra

Cassandra хранит реплики данных на нескольких узлах, чтобы обеспечить надежность и отказоустойчивость. Стратегия репликации для каждого пространства ключей Edge определяет узлы, на которых размещаются реплики.

Общее количество реплик для пространства ключей в кластере Cassandra называется фактором репликации. Коэффициент репликации, равный единице, означает, что в кластере Cassandra есть только одна копия каждой строки. Коэффициент репликации, равный двум, означает, что каждая строка имеет две копии, и каждая копия находится на отдельном узле. Все реплики одинаково важны. Нет основной или главной реплики.

В рабочей системе с тремя или более узлами Cassandra в каждом центре обработки данных коэффициент репликации по умолчанию для пространства ключей Edge равен трем. Как правило, коэффициент репликации не должен превышать количество узлов Cassandra в кластере.

Чтобы посмотреть схему Cassandra, в которой указан коэффициент репликации для каждого пространства ключей Edge, выполните следующие действия:

  1. Войдите в узел Cassandra.
  2. Выполните следующую команду:
    > /opt/apigee/apigee-cassandra/bin/cassandra-cli -h $(hostname -i) <<< "show schema;"

    где $(hostname -i) преобразуется в IP-адрес узла Cassandra. Вы также можете заменить $(hostname -i) на IP-адрес узла.

Для каждого пространства ключей будет показан следующий результат:

create keyspace kms
  with placement_strategy = 'NetworkTopologyStrategy'
  and strategy_options = {dc-1 : 3}
  and durable_writes = true;

Как видите, для центра обработки данных 1 (dc-1) коэффициент репликации по умолчанию для пространства ключей kms равен трем для установки с тремя узлами Cassandra.

Если вы добавите в кластер дополнительные узлы Cassandra, коэффициент репликации по умолчанию не изменится.

Например, если вы увеличите количество узлов Cassandra до шести, но оставите коэффициент репликации равным трем, вы не сможете гарантировать, что у всех узлов Cassandra есть копия всех данных. Если узел выходит из строя, более высокий коэффициент репликации означает более высокую вероятность того, что данные на узле существуют на одном из оставшихся узлов. Недостаток более высокого коэффициента репликации – увеличение задержки при записи данных.

Уровень согласованности Cassandra

Уровень согласованности Cassandra определяется как минимальное количество узлов Cassandra, которые должны подтвердить операцию чтения или записи, чтобы она считалась успешной. Разным ключевым пространствам Edge можно назначить разные уровни согласованности.

При подключении к Cassandra для выполнения операций чтения и записи узлы обработчика сообщений и сервера управления обычно используют значение Cassandra LOCAL_QUORUM, чтобы указать уровень согласованности для пространства ключей. Однако для некоторых пространств ключей задан уровень согласованности "один".

Значение LOCAL_QUORUM для центра обработки данных рассчитывается следующим образом:

LOCAL_QUORUM = (replication_factor/2) + 1 

Как описано выше, коэффициент репликации по умолчанию для рабочей среды Edge с тремя узлами Cassandra равен трем. Таким образом, значение по умолчанию для LOCAL_QUORUM = (3/2) + 1 = 2 (значение округляется до целого числа).

Если задано значение LOCAL_QUORUM = 2, для успешного выполнения операции чтения или записи должны ответить хотя бы два из трех узлов Cassandra в центре обработки данных. Таким образом, кластер Cassandra из трех узлов может выдержать отключение одного узла в каждом центре обработки данных.

Указав уровень согласованности LOCAL_QUORUM, Edge избегает задержки, необходимой для проверки операций в нескольких центрах обработки данных. Если в пространстве ключей в качестве уровня согласованности используется значение QUORUM Cassandra, операции чтения и записи должны быть подтверждены во всех центрах обработки данных.

Чтобы посмотреть уровень согласованности, используемый узлами Message Processor или Management Server:

  1. Войдите в узел Message Processor.
  2. Перейдите в каталог /opt/apigee/edge-message-processor/conf:
    > cd /opt/apigee/edge-message-processor/conf
  3. Для согласованности записи:
    > grep -ri "write.consistencylevel" *
  4. Для согласованности чтения:
    > grep -ri "read.consistencylevel" *
  5. Войдите в узел сервера управления.
  6. Перейдите в каталог /opt/apigee/edge-management-server/conf:
    > cd /opt/apigee/edge-management-server/conf
  7. Повторите шаги 3 и 4.

Если вы добавите в кластер дополнительные узлы Cassandra, уровень согласованности не изменится.