Объяснение архитектуры Cassandra: подробное руководство

Опубликовано: 2021-03-10

С момента своего создания в Facebook Cassandra стала одним из самых популярных проектов Apache. Это широко используемая высокопроизводительная распределенная база данных с открытым исходным кодом, которая облегчает жизнь инженерам-программистам, специалистам по данным и веб-разработчикам.

Среди пользователей этого надежного решения для баз данных есть такие компании, как IBM, Facebook, Reddit, eBay и Twitter.

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

Вот почему мы создали следующее вводное руководство по архитектуре Cassandra. Это познакомит вас со всеми необходимыми концепциями архитектуры Cassandra:

Оглавление

Основы архитектуры Cassandra

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

Архитектура Cassandra позволяет системе функционировать независимо от единой точки отказа. Это означает, что если в кластере есть сто узлов и один из них выйдет из строя, кластер все равно будет работать. С другой стороны, в случае с Hadoop отказ узла имени приведет к отказу всей системы.

Архитектура Cassandra обеспечивает высокую масштабируемость, поэтому в кластере могут быть даже тысячи узлов. Более того, вы можете добавить новый узел в кластер, не прерывая его работу.

Помимо функций, которые мы обсуждали выше, архитектура Apache Cassandra также поддерживает несколько центров обработки данных и обеспечивает репликацию данных между центрами обработки данных.

Топология и дизайн

Архитектура Cassandra основана на архитектуре распределенной системы. Простейшая версия Cassandra может работать на одной машине и хорошо работать при базовом тестировании. Один экземпляр Cassandra называется узлом.

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

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

Слухи

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

Семена

Каждый узел в Cassandra настраивает список семян, который является списком других узлов. Исходный узел не имеет никакой цели, кроме начальной загрузки узла, когда он впервые присоединяется к кластеру. После начальной загрузки узлу не требуется начальное значение при перезапуске. Лучше всего использовать два или три исходных узла для каждого центра обработки данных Cassandra и поддерживать единый список исходных узлов.

Структура базы данных

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

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

Разделение в Cassandra

В Cassandra разделитель преобразует ключи раздела в токены. В Cassandra присутствует несколько вариантов разделителей, где по умолчанию используется Murmur3Partitioner. Каждому токену присваивается целочисленное значение от -2^63 до +2^63-1, и имя этого диапазона — диапазон токенов.

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

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

Виртуальные узлы

Cassandra упрощает расчет и назначение токенов, используя виртуальные узлы, также известные как Vnodes.

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

Репликация

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

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

Стратегия репликации задается на уровне пространства ключей, и их две: NetworkTopologyStrategy и простая стратегия. Первый поддерживает стойки и центры обработки данных, а второй — нет.

Теорема CAP

Каждая распределенная система работает на основе теоремы CAP. Согласно этой теореме, любая распределенная система может должным образом обеспечивать любые два из трех свойств: непротиворечивость, доступность и устойчивость к разбиению.

В Cassandra вы можете выбирать между доступностью и согласованностью. Это означает, что данные могут быть либо высокосогласованными с более низкой доступностью, либо высокодоступными с низкой согласованностью.

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

Процесс записи

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

После этого узлы записывают данные в таблицу в памяти, называемую memtable, откуда данные записываются в «sstable» в памяти. Затем он обновляется до фактической таблицы.

Если ответственный узел по какой-либо причине не работает, данные записываются на другой узел.

Узнайте больше об архитектуре Cassandra

Понимание архитектуры Apache Cassandra поможет вам понять, как работает это решение. К настоящему времени вы также знаете, почему Cassandra выделяется среди конкурентов и почему она так популярна.

Если вы хотите узнать больше о базах данных, вы можете ознакомиться со следующими ресурсами:

SQL для науки о данных: почему SQL, список преимуществ и команд

20 самых распространенных вопросов и ответов на собеседовании по SQL [для первокурсников]

Бесплатный онлайн-курс SQL с сертификатом [2021]

С другой стороны, если вы ищете персонализированный опыт обучения, мы рекомендуем пройти курс по науке о данных. В upGrad мы предлагаем диплом PG в области науки о данных и степень магистра наук в области науки о данных . Эти курсы научат вас всем необходимым навыкам, чтобы стать профессионалом в области обработки данных.

Заключение

Если вам интересно узнать больше о программе Big Data, ознакомьтесь с нашей программой PG Diploma в области разработки программного обеспечения со специализацией в области больших данных, которая предназначена для работающих профессионалов и включает более 7 тематических исследований и проектов, охватывает 14 языков и инструментов программирования, практические советы. на семинарах, более 400 часов тщательного обучения и помощи в трудоустройстве в ведущих фирмах.

Ознакомьтесь с другими нашими курсами по программной инженерии на upGrad.

Передовая учебная программа по большим данным

ПЕРЕДОВАЯ УЧЕБНАЯ ПРОГРАММА ПО БОЛЬШИМ ДАННЫМ ОТ IIIT-B
Расширенная программа сертификации в области больших данных от IIIT Bangalore