О коэффициенте репликации Cassandra
Cassandra хранит реплики данных на нескольких узлах, чтобы обеспечить надежность и отказоустойчивость. Стратегия репликации для каждого пространства ключей Edge определяет узлы, на которых размещаются реплики.
Общее количество реплик для пространства ключей в кластере Cassandra называется фактором репликации. Коэффициент репликации, равный единице, означает, что в кластере Cassandra есть только одна копия каждой строки. Коэффициент репликации, равный двум, означает, что каждая строка имеет две копии, и каждая копия находится на отдельном узле. Все реплики одинаково важны. Нет основной или главной реплики.
В рабочей системе с тремя или более узлами Cassandra в каждом центре обработки данных коэффициент репликации по умолчанию для пространства ключей Edge равен трем. Как правило, коэффициент репликации не должен превышать количество узлов Cassandra в кластере.
Чтобы посмотреть схему Cassandra, в которой указан коэффициент репликации для каждого пространства ключей Edge, выполните следующие действия:
- Войдите в узел Cassandra.
- Выполните следующую команду:
/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 для выполнения операций чтения и записи узлы Message Processor и Management Server обычно используют значение 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 не будет проверять операции в нескольких центрах обработки данных, что позволит избежать задержек. Если в пространстве ключей в качестве уровня согласованности используется значение Cassandra QUORUM, операции чтения и записи должны быть подтверждены во всех центрах обработки данных.
Чтобы узнать уровень согласованности, используемый процессором сообщений Edge или узлами сервера управления, выполните следующие действия:
- Войдите в узел Message Processor.
- Перейдите в каталог /opt/apigee/edge-message-processor/conf:
cd /opt/apigee/edge-message-processor/conf
- Для согласованности записи:
grep -ri "write.consistencylevel" *
- Для обеспечения согласованности при чтении:
grep -ri "read.consistencylevel" *
- Войдите в узел сервера управления.
- Перейдите в каталог /opt/apigee/edge-management-server/conf:
cd /opt/apigee/edge-management-server/conf
- Повторите шаги 3 и 4.
Если вы добавите в кластер дополнительные узлы Cassandra, уровень согласованности не изменится.