Адаптируясь к растущему потенциалу оборудования, которому отдают предпочтение корпоративные клиенты, разработчики распределенной NoSQL-СУБД Cassandra, поддерживаемой организацией Apache Software Foundation, в ее новой версии улучшили использование ресурсов мощных серверов за счет поддержки виртуальных узлов и определения политик конфигурирования на случай отказа дисков.
В Cassandra 1.2 появилась возможность выполнения пакетных операций в атомарном режиме и обновленный вариант языка запросов Cassandra Query Language, CQL3. «Традиционно одним из главных достоинств Cassandra считалась высокая масштабируемость при развертывании на большом количестве машин относительно небольшой мощности», — отметил Джонатан Эллис, осуществляющий в Apache общее руководство проектом Cassandra. Эллис является также одним из основателей компании DataStax, предлагающей коммерческую поддержку этого программного обеспечения.
Однако в последнее время все больше организаций приобретают мощные серверы с увеличенным объемом оперативной памяти и дискового пространства. Такие серверы обладают улучшенным соотношением между ценой и производительностью. Выпуск обновленной версии Cassandra во многом связан с улучшением поддержки подобных машин.
СУБД Cassandra, разрабатывавшаяся изначально как внутренний проект Facebook и ставшая общедоступной в 2008 году, предназначена для хранения огромных массивов данных на большом количестве серверов. Сегодня эту технологию используют Adobe, Cisco, Disney, eBay, IBM, Netflix, Reddit, Spotify, Twitter и Williams-Sonoma.
В новой версии программного обеспечения появились средства поддержки виртуальных узлов (vnodes), предназначенных для быстрого восстановления функционирования системы в случае отказа отдельного сервера в кластере Cassandra. Кроме того, виртуальные узлы повышают общую производительность системы.
Поддержка виртуальных узлов относится к числу главных особенностей распределенного хранилища данных Amazon Dynamo, которое послужило разработчикам в качестве модели для использования Cassandra. На начальном этапе предпочтение было отдано упрощенной архитектуре, в которой один узел соответствует одному серверу.
Новая технология виртуальных узлов позволит упростить процесс управления кластерами, особенно при добавлении узлов или их реорганизации. Концепция виртуальных узлов предполагает возможность развертывания нескольких узлов на каждом сервере.
Поскольку отдельный виртуальный узел не забирает все ресурсы сервера, на каждом сервере может быть создано множество узлов. В случае отказа диска это позволяет быстро восстанавливать из реплик аналогичные узлы на других серверах. Продолжительность восстановления работоспособности вполне сравнима со временем копирования реплицированных данных с одного сервера.
Уменьшение масштабов узлов, развернутых на большом количестве серверов, обеспечивает сбалансированность нагрузки между всеми машинами в кластере. «Каждый виртуальный узел управляется на сервере одним процессом Java, поэтому добавления большого числа процессов, обслуживаемых операционной системой, у нас не происходит, — пояснил Эллис. — Речь идет лишь о виртуализации ресурсов хранения».
В числе других функций, появившихся в версии Apache Cassandra 1.2, следует выделить отладочный инструмент трассировки запросов и политики конфигурирования на случай отказа диска. При отказе диска администратор может полностью остановить операции или продолжить их выполнение без гарантии успешного завершения. Кроме того, в новую версию интегрированы дополнительные компоненты, предназначенные для повышения производительности и устранения ошибок.
СУБД Cassandra распространяется с открытым кодом по лицензии Apache License version 2.
Виртуальный узел
В новой версии программного обеспечения появились средства поддержки виртуальных узлов (vnodes), предназначенных для быстрого восстановления функционирования системы в случае отказа отдельного сервера в кластере Cassandra. Новая технология позволит упростить процесс управления кластерами, особенно при добавлении узлов или их реорганизации. Концепция виртуальных узлов предполагает возможность развертывания нескольких узлов на каждом сервере. Поскольку отдельный виртуальный узел не забирает все ресурсы сервера, на каждом сервере может быть создано множество узлов. В случае отказа диска это позволяет быстро восстанавливать из реплик аналогичные узлы на других серверах.