Tarantool
Решения in-memory быстрее, а в Tarantool обеспечена гарантия целостности данных
Tarantool — решение класса middleware для ускорения IT-систем и обработки данных. Сочетает в себе сервер приложений, гибридное хранилище (базу данных) с гибкой схемой данных и мощные средства масштабирования. Разработка VK Tech, российского вендора корпоративного ПО.
Платформа способна обрабатывать до 1 млн запросов в секунду благодаря размещению данных в оперативной памяти. Применяется в банковском секторе, ритейле, телекоме и других отраслях для эффективного создания высоконагруженных приложений.
Возможности
Быстрое in‑memory хранилище
Tarantool хранит данные в оперативной памяти, обеспечивая доступ за микросекунды. При этом на диске сохраняются снимки (snapshots) и журналы транзакций, что гарантирует устойчивость к сбоям. Такая модель позволяет обрабатывать десятки тысяч запросов в секунду.
Мульти‑модельный подход
Помимо традиционного ключ–значение, Tarantool поддерживает таблицы SQL‑подобного синтаксиса и индексы B‑tree, hash‑и GiST. Это позволяет разрабатывать как OLTP‑приложения, так и гибридные решения с одновременно необходимыми структурами данных.
Поддержка Lua‑скриптов
Lua встроен в ядро и может использоваться как серверный скрипт, обработчик триггеров и бизнес‑логика. Lua‑функции выполняются в одном потоке, что упрощает отладку и повышает производительность.
Кластеризация и репликация
Tarantool предлагает синхронную/асинхронную репликацию и автоматическое распределение данных по узлам (sharding). Клиент получает прозрачный доступ к кластеру, а система обеспечивает отказоустойчивость и масштабируемость.
Модульная архитектура
Через модульную систему можно подключать расширения, написанные на C/C++ или Lua. Официальный репозиторий содержит модули для работы с HTTP, Redis‑совместимостью, MQTT и многими другими протоколами. Это позволяет быстро адаптировать Tarantool под специфические задачи.
Архитектура
Ядро на C/C++
Основная часть Tarantool написана на высокоэффективном языке, что обеспечивает низкую задержку и минимальный расход ресурсов. Код открытый, а лицензия MIT позволяет встраивать его в любые проекты без ограничений.
Модульная система
Каждый компонент (сервера, клиент, модули) реализован как отдельный плагин. Модуль engine отвечает за хранение, router – за маршрутизацию запросов, а lua‑модуль предоставляет API для скриптов. Это упрощает обновление и замену компонентов.
Параллельная обработка
Использует многопоточность с разделением нагрузки: ядро читает запросы, потоки обрабатывают Lua и I/O. Это позволяет использовать многоядерные процессоры, сохраняя однопоточную модель Lua.
Конфигурация (tarantool.cfg)
Параметры, пути к snapshot‑файлам и настройки репликации, задаются в простом текстовом файле. Конфигурация поддерживает динамическое изменение без перезапуска сервера, что критично для высокодоступных систем.
Масштабируемость и балансировка
Встроенный API topology позволяет программно управлять узлами кластера: добавлять/удалять реплики, менять распределение данных. Это обеспечивает горизонтальное масштабирование без вмешательства администратора в структуру таблиц, а также позволяет интегрировать Tarantool с внешними балансировщиками нагрузки.
