О коэффициенте репликации Cassandra
Cassandra хранит реплики данных на нескольких узлах, чтобы обеспечить надежность и отказоустойчивость. Стратегия репликации для каждого пространства ключей Edge определяет узлы, на которых размещаются реплики.
Общее количество реплик для пространства ключей в кластере Cassandra называется фактором репликации. Коэффициент репликации, равный единице, означает, что в кластере Cassandra есть только одна копия каждой строки. Коэффициент репликации, равный двум, означает, что каждая строка имеет две копии, и каждая копия находится на отдельном узле. Все реплики одинаково важны. Нет основной или главной реплики.
В рабочей системе с тремя или более узлами Cassandra в каждом центре обработки данных коэффициент репликации по умолчанию для пространства ключей Edge равен трем. Как правило, коэффициент репликации не должен превышать количество узлов Cassandra в кластере.
Чтобы посмотреть схему Cassandra, в которой указан коэффициент репликации для каждого пространства ключей Edge, выполните следующие действия:
- Войдите в узел Cassandra.
- Выполните следующую команду:
/opt/apigee/apigee-cassandra/bin/cqlsh $(hostname -i) [-u
cassuser-pcasspass] -e "select keyspace_name, replication from system_schema.keyspaces;"где
$(hostname -i)– IP-адрес узла Cassandra. Вы также можете заменить$(hostname -i)на IP-адрес узла.cassuser– если вы включили аутентификацию Cassandra, укажите имя пользователя Cassandra. Это необязательный шаг, который можно пропустить, если аутентификация Cassandra не включена.casspass: если вы включили аутентификацию Cassandra, передайте пароль Cassandra. Это необязательный шаг, который можно пропустить, если аутентификация Cassandra не включена.
Вы увидите результат, похожий на приведенный ниже, где каждая строка представляет собой одно пространство ключей:
keyspace_name | replication kms | {'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy', 'dc-1': '3'} system_distributed | {'class': 'org.apache.cassandra.locator.SimpleStrategy', 'replication_factor': '3'} apprepo | {'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy', 'dc-1': '3'}
Как видите, для центра обработки данных 1 (dc-1) коэффициент репликации по умолчанию для пространства ключей kms равен трем для установки с тремя узлами Cassandra. Для некоторых внутренних пространств ключей Cassandra (например, system, system_schema и т. д.) стратегия репликации и коэффициент репликации могут быть другими. Это намеренное поведение системы.
Если вы добавите в кластер дополнительные узлы 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 "consistency.level" *
- Войдите в узел сервера управления.
- Перейдите в каталог
/opt/apigee/edge-management-server/conf:cd /opt/apigee/edge-management-server/conf
- Повторите шаг 3.
Если вы добавите в кластер дополнительные узлы Cassandra, уровень согласованности не изменится.