Каковы различия между node, кластером и центром обработки данных в базе данных nosql cassandra?
Я пытаюсь дублировать данные в базе данных nosql cassandra для школьного проекта, используя центр datastax ops. Из того, что я прочитал, есть три ключевых слова: кластер, node и датацентр, и из того, что я понял, данные в node могут быть дублированы в другом node, который существует в другом кластере. И все узлы, которые содержат одни и те же (дублированные) данные, составляют центр обработки данных. Правильно ли это?
Если это не так, в чем разница?
Ответы
Ответ 1
Иерархия элементов в Кассандре:
- Кластер
- Центр обработки данных (ы)
Кластер представляет собой набор центров обработки данных.
Центр данных представляет собой набор стоек.
A Rack - это набор серверов.
Сервер по умолчанию содержит 256 виртуальных узлов (или vnodes).
Vnode - это уровень хранения данных на сервере.
Примечание. Сервер - это программное обеспечение Cassandra. Сервер установлен на компьютере, где машина является либо физическим сервером, либо экземпляром EC2, либо подобным.
Теперь специально рассмотрим ваши вопросы.
Отдельная единица данных называется разделом. И да, разделы реплицируются на нескольких узлах. Каждая копия раздела называется репликой.
В кластере центров данных с несколькими данными репликация выполняется на центр обработки данных. Например, если у вас есть центр обработки данных в Сан-Франциско, названный dc-sf, а другой в Нью-Йорке по имени dc-ny, то вы можете контролировать количество реплик в каждом центре обработки данных.
В качестве примера вы можете установить dc-sf, чтобы иметь 3 реплики и dc-ny, чтобы иметь 2 реплики.
Эти числа называются фактором репликации. Вы бы конкретно сказали, что dc-sf имеет коэффициент репликации 3, а dc-ny имеет коэффициент репликации 2. Простыми словами, dc-sf будет иметь 3 копии данных, распространяемых по трем vnodes, тогда как dc-sf будет иметь 2 копии данных, распространяемых по двум vnodes.
Пока каждый сервер имеет 256 vnodes по умолчанию, Cassandra достаточно умен, чтобы выбирать vnodes, которые существуют на разных физических серверах.
Подводя итог:
- Данные реплицируются на нескольких виртуальных узлах (каждый сервер содержит по умолчанию 256 vnodes)
- Каждая копия данных называется репликой
- Единица данных называется разделом
- Репликация контролируется в центре обработки данных
Ответ 2
A node - это единственная машина, которая запускает Cassandra. Набор узлов, содержащих аналогичные данные, сгруппирован в так называемое "кольцо" или кластер.
Иногда, если у вас много данных или вы обслуживаете данные в разных географических зонах, имеет смысл группировать узлы вашего кластера в разные центры обработки данных. Хорошим вариантом для этого является веб-сайт электронной коммерции, который может иметь много частых клиентов на восточном побережье и на западном побережье. Таким образом, ваши клиенты на восточном побережье подключаются к вашему восточному побережью DC (для повышения производительности), но в конечном итоге имеют доступ к одному набору данных (оба DC находятся в одном кластере), как клиенты западного побережья.
Дополнительную информацию об этом можно найти здесь: Об Apache Cassandra - Как работает Cassandra?
И все узлы, которые содержат одни и те же (дублированные) данные, составляют центр обработки данных. Правильно ли это?
Закрыть, но не обязательно. Уровень дублирования данных определяется вашим коэффициентом репликации, который устанавливается на основе каждого ключа. Например, скажем, что у меня есть 3 узла в моем единственном DC, все хранящие 600 ГБ данных о продукте. Мое определение пространства ключей products
может выглядеть следующим образом:
CREATE KEYSPACE products
WITH replication = {'class': 'NetworkTopologyStrategy', 'MyDC': '3'};
Это гарантирует, что данные моего продукта будут одинаково реплицированы на все 3 узла. Размер моего общего набора данных составляет 600 ГБ, дублируется на всех трех узлах.
Но позвольте сказать, что мы развертываем новую довольно крупную линейку продуктов, и я полагаю, что у нас будет еще 300 ГБ данных, которые могут начать нажимать максимальную емкость наших жестких дисков. Если мы не можем сейчас обновлять все наши жесткие диски, я могу изменить коэффициент репликации следующим образом:
CREATE KEYSPACE products
WITH replication = {'class': 'NetworkTopologyStrategy', 'MyDC': '2'};
Это создаст 2 копии всех наших данных и сохранит их в нашем нынешнем кластере из 3 узлов. Размер нашего набора данных теперь составляет 900 ГБ, но поскольку их всего две копии (каждый node отвечает за 2/3 данных), наш размер на диске по-прежнему составляет 600 ГБ. Недостатком здесь является то, что (при условии, что я читаю и пишу на уровне согласованности ONE
), я могу позволить себе потерпеть потерю 1 node. В то время как с 3 узлами и RF 3 (снова чтение и запись при согласованности ONE
), я могу потерять 2 узла и все еще выполнять запросы.
Ответ 3
Node:
Машина, которая хранит часть вашей всей базы данных. Это может включать репликации данных из другого node, а также собственные данные. Какие данные он отвечает, определяется его диапазонами токенов и стратегией репликации пространства ключей, в котором хранятся данные.
Datacenter:
Логическая группировка узлов, которые могут быть отделены от других узлов. Общим вариантом использования является AWS-EAST против AWS-WEST. Репликация NetworkTopologyStrategy
используется для определения того, сколько реплик всего пространства ключей должно существовать в любом данном центре данных. Это то, как пользователи Cassandra достигают кросс-репликации. Кроме того, они представляют собой политики уровня согласованности, которые требуют подтверждения только в центре данных координатора (LOCAL_*
)
Кластер
Общая сумма всех машин в вашей базе данных, включая все датацентры. Нет репликации кросс-кластеров.