Производитель Aerospike позиционирует решение как высокопроизводительную NoSQL базу данных.nnПродукт имеет гибридную архитектуру: данные хранятся на SSD диске, в то время как индексы располагаются в RAM. Также архитектура оптимизирована для работы на многоядерных и многопроцессорных системах и использует прямой доступ к диску, что позволяет повысить время отклика за счет отсутствия обработки на уровне файловой системы.nnAerospike имеет возможность кластеризации. При этом система равномерно распределяет данные по узлам кластера, грамотно используя аппаратные ресурсы. Если кластера находятся в разных датацентрах система автоматически понимает это и использует при распределении нагрузки.nnСлабым местом большинства NoSQL баз данных является обеспечение консистентности. Aerospike оперирует понятием строгой консистентности. Позволяет поддерживать консистентность данных на различных узлах кластера.nnПО имеет API для интеграции с Вашим проектом. В качестве клиентов для базы данных могут быть решения на Java, Node.js, C#, .NET, C, PHP, Python, Ruby, Go…nnПо заверениям разработчика Aerospike может обеспечить надежную обработку одного миллиона транзакций в секунду (TPS) на аппаратном обеспечении стоимостью не более $5К. Ниже приведено описание архитектуры Aerospike, которая обеспечивает эти возможности.nnnAerospike создавался как масштабируемая NoSQL база данных. Ее архитектура решает три основные задачи:n
- Создание гибкой, масштабируемой платформы для web-масштабируемых приложений.
- Предоставление такой же надежности и достоверности (ACID) как и в реляционных базах данных
- Обеспечение оперативной эффективности с минимальным ручным вмешательством.
Архитектура Aerospike
Архитектура Aerospike, как было заявлено в Proceedings of VLDB (Very Large Databases) in 2011, включает три уровня:n
- Client Layer: Этот уровень включает клиентские библиотеки с открытым исходным кодом, который осуществляет взаимодействие с Aerospike через API, отслеживает узлы, и знает где в кластере расположены требуемые данные.
- Clustering и Data Distribution Layer: Этот уровень обслуживает кластерные коммуникации и автоматизирует отказоустойчивость, репликацию, синхронизацию между дата-центрами, балансировку нагрузки и миграцию данных.
- Data Storage Layer: Этот уровень обеспечивает надежное хранение данных в DRAM и Flash для быстрого получения нужной информации.
n
Client Layer
Aerospike Smart Client™ разработан для быстрой работы. Он разработан как open source библиотека, доступная на C, C#, Java, Node.js и других языках (полный список можно посмотреть на странице Clients Download). В рамках open source решения разработчики могут способствовать созданию новых клиентов или модифицировать существующие.nnClient layer:n
- Обеспечивает работу с Aerospike API – клиент-серверным протоколом, который обращается непосредственно к кластеру данных.
- Отслеживает узлы кластера и знает где непосредственно сохранены требуемые данные, контролирует все изменения в кластере, в том числе и состояние узлов, немедленно реагируя на произошедшие изменения.
- Использует свой собственный TCP/IP пул соединений для максимально эффективности. Также отслеживает сбойные транзакции и перенаправляет такие транзакции другим узлам кластера, хранящим данные.
- Прозрачно посылает запрос непосредственно на узел с требуемыми данными, повторяет попытки и перенаправляет запросы при необходимости.
Такая архитектура уменьшает латентность транзакций, снимает нагрузку с кластера, исключает лишнюю нагрузку для разработчика. Гарантирует, что добавление или удаление узлов кластера будет прозрачно для приложения. Также убирает необходимость настройки кластера, добавления серверов управления или прокси-серверов кластера.n
Distribution Layer
“Shared nothing” архитектура Aerospike Предназначена для надежного хранения большого количества данных, с обеспечением автоматической отказоустойчивости, репликацией и синхронизацией данных между дата-центрами. Этот уровень линейно масштабируется и гарантирует соблюдение целостности данных ACID The Distribution layer предназначен для устранения ручных операций с систематической автоматизацией всех функций управления кластером. Он включает три модуля:n
- Cluster Management Module: отслеживает состояние узлов кластера. Ключевым алгоритмом является процесс согласованного голосования на основе Paxos, который определяет, какие узлы считаются частью кластера. Для определения состояния узла кластера Aerospike ориентируется на heartbeat (как активный, так и пассивный) хоста.
Репликация между дата-центрами
- Data Migration Module: Когда добавляются или удаляются узлы кластера это фиксируется в Aerospike Database cluster membership. Каждый узел использует распределенный хеш-алгоритм для разделения первичного индексного пространства на части данных и назначает владельцев этих частей. Aerospike Data Migration module распределяет данные между всеми узлами кластера, таким образом, чтобы каждый бит данных реплицировался на все узлы и дата-центры. Эта операция доступна для конфигурирования в параметрах системы. Разделение чисто алгоритмическое. Система масштабируется без master-сервера и исключает потребность дополнительной конфигурации.
- Transaction Processing Module: читает и пишет данные запроса, обеспечивает консистентность и изолированность данных. Этот модуль отвечает за
- Sync/Async Replication: Для записей с немедленной согласованностью он распространяет изменения на все реплики перед фиксацией данных и возвращает результат клиенту.
- Proxy: В случаях если информация клиента о кластере устарела, модуль обработки транзакций прозрачно прокси-серверу запроса на другой узел.
- Duplicate Resolution: Этот модуль решает конфликты между различными копиями данных, при восстановлении частей данных каждого узла в единое целое. Принцип принятия решения настраивается в конфигурации и может быть основан на версии данных или сроке жизни.
Кластеризация
Как только первый кластер поднят, можно создавать дополнительные кластера в других дата-центрах и настраивать репликацию между дата-центрами для того, чтобы при отказе основного дата-центра, удаленный кластер смог взять на себя нагрузку практически без прерывания работы пользователей.n
Data Storage Layer
Aerospike это хранилище записей «ключ-значение» без определенной схемы данных. Данные попадают в контейнеры – пространства имен(namespaces), которые аналогичны базам данных (databases) в RDBMS системах. В пространстве имен, данные разделяются на наборы(sets) (RDBMS таблицы(tables)) и записи (records) (RDBMS строки (rows)). Каждая запись имеет индексированный ключ(key) уникальный в наборе, и один лил несколько именованных бункеров (bins) (RDBMS столбцы(columns)) которые содержат значения связанные с записью.nnЗаметьте что:n
- Вам не нужно определять sets и bins. Для максимальной гибкости, они могут быть добавлены в процессе работы.
- Значения в bins жестко типизированы, и могут принадлежать любому поддерживаемому типу данных. Сами bins не типизированы, поэтому различные записи могут содержать один и тот же bin со значениями разных типов.
Индексы (primary keys и secondary keys) хранятся в DRAM для супер-быстрого доступа. Значения могут также храниться в DRAM или для удешевления стоимости – на SSD. Для каждого пространства имен хранение данных может быть настроено отдельно, таким образом, небольшие пространства имен могут использовать преимущества DRAM, а более крупные — экономически выгодные SSD-решения.nnData Layer был разработан для повышения скорости и существенного сокращения расходов на оборудование. Он может работать полностью в памяти, что избавляет от необходимости кэширования.n
В Aerospike:
- 100 миллионов ключей занимают 6.4GB. Не смотря на то, что ключи не имеют ограничений по размеру, для хранения ключа достаточно 64 bytes.
- Родные, многопоточные, многоядерные Flash I/O и Aerospike log structured file system пользуются механизмами низкоуровневого чтения\записи SSD. Для минимизации латентности запись на диск осуществляется большими блоками. Этот механизм идет в обход файловой системы, исторически ориентированной на классические HDD.
- Smart Defragmenter и Intelligent Evictor работают вместе, чтобы гарантировать, наличие места в DRAM сохранность данных при записи на диск.
- Smart Defragmenter: отслеживает количество активных записей в каждом блоке и утилизирует блоки, которые опускаются ниже минимального уровня использования .
- Intelligent Evictor: удаляет записи с истекшим сроком действия и восстанавливает память, если система выходит за установленный максимум. Истечение срока действия настраивается для каждого пространства имен. Срок жизни записи рассчитывается с момента последней модификации. Приложение может переопределить время жизни по умолчанию и указать, что запись должна находиться в памяти постоянно.
Работа с Aerospike
Для обеспечения достаточной продуктивности и избыточности, необходимо правильно спланировать и сконфигурировать решение используйте рекомендации в статье Capacity Planning для своих проектов.nnAerospike предоставляет management utilities и monitoring tools для администрирования кластера. Продукт имеет собственную Aerospike Monitoring Console может мониториться с помощью Nagios и Zabbix. Вы можете использовать aerospike с применение облачных технологий Amazon EC2, PlannnРешение кроссплатформенное и может быть установлено на сервер с ОС Linux, windows или OS X.nnВ настоящее время разработчик предлагает две версии программного обеспечения для баз данных: с открытым исходным кодом Aerospike Community Edition и Aerospike Enterprise Edition. Enterprise Edition включает в себя все функции Community Edition, а также множество дополнительных функций, в том числе доступ к проверенным и сертифицированным сборкам, горячим исправлениям и поддержке 24 × 7 × 365. Enterprise Edition доступна либо через корпоративную пробную версию, либо в программе быстрого старта. Другие различия между версиями видны в таблице:n
Наши специалисты имеют опыт работы с базами данных и кластерами Aerospike. Если у вас есть вопросы связанные с этим продуктом – наша компания всегда готова оказать вам помощь! [email protected]