Объяснение архитектуры 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.