Кластеризация ============== **Arenadata Grid** обладает расширенными возможностями кластеризации, включая логические группы хранилищ и экземпляров приложений. Узлы **Arenadata Grid** представляют собой серверные процессы **Tarantool**, выполняющие различные функции. Механизм кластеризации осуществляется с помощью фреймворка **Cartridge**. **Tarantool Cartridge** рекомендуется в качестве альтернативы традиционному подходу разработки приложений для **Tarantool**. В качестве набора средств разработки (SDK) **Tarantool Cartridge** предлагает утилиты и шаблоны, которые помогут: * С легкостью настроить среду разработки для приложений; * Подключить необходимые Lua-модули. Полученный пакет можно установить и запустить на одном сервере или нескольких серверах в качестве одного экземпляра службы или как несколько служб, независимо или в кластере. Для того чтобы полностью использовать возможности Tarantool-кластера, необходимо разрабатывать приложения исходя из того, что они должны работать в кластерной среде. Кроме того, кластер в **Tarantool** предоставляет следующие ключевые преимущества для кластерных приложений: * Горизонтальная масштабируемость и балансировка нагрузки с помощью встроенного автоматического шардинга; * Асинхронная репликация; * Автоматическое восстановление после отказа; * Централизованное управление кластером через графический интерфейс или API; * Автоматическая синхронизация настроек; * Разделение функций экземпляров. Кластер в **Tarantool Cartridge** может распределять функции экземпляров с помощью встроенных и пользовательских (настраиваемых) кластерных ролей. Во время работы кластера можно включить и отключить роли на лету. Это позволяет по-разному нагружать физические серверы с различным профилем оборудования (например, для ресурсоемких вычислений или для обработки большого количества транзакций). Основные роли в кластере **Cartridge**: * **Storage** -- экземпляр хранилища данных, который ответственен за собственно хранение и доступ к данным, хранящимся в памяти (движок *memtx*) и на локальных дисках (движок *vinyl*); * **Router** -- экземпляр приложения в Tarantool. Все роли приложения наследуются от этой роли. Вышеописанные экземпляры могут объединяться в логические группы *vshard*, обеспечивающие отказоустойчивость и балансировку нагрузки по принципу *1 master + n replicas*. Горизонтальное масштабирование осуществляется автоматическим распределением данных между узлами *vshard*. Данные в таблицах разбиваются на небольшие блоки данных -- бакеты. Распределение данных между *vshard* осуществляется путем вычисления из первичного индекса таблицы *ключа шардирования*. Данные с одним и тем же ключом шардирования помещаются в один и тот же *vshard*. Таким образом можно обеспечить локальность данных. Параметр *Weight* позволяет настроить долю хранимых на конкретном *vshard* бакетов от общего числа бакетов в хранилище. Экземпляр *master* в шарде позволяет писать и читать данные из таблицы, *replica* -- только читать. .. important:: Контактная информация службы поддержки -- e-mail: info@arenadata.io