О коэффициенте репликации 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 избегает задержки, необходимой для проверки операций в нескольких центрах обработки данных. Если бы в пространстве ключей в качестве уровня согласованности использовалось значение QUORUM Cassandra, операции чтения и записи пришлось бы проверять во всех центрах обработки данных.
Чтобы посмотреть уровень согласованности, используемый узлами Edge Message Processor или Management Server, выполните следующие действия:
- Войдите в узел 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, это не повлияет на уровень согласованности.