Tarantool DataBase 2.0.0
Дата релиза: 19.09.2024.
Релиз Tarantool DB 2.0 основан на Tarantool 3.x. В этом релизе добавлена поддержка централизованного хранилища конфигураций и Tarantool Cluster Manager, значительно обновлен модуль словарей, а также добавлены новые запускаемые примеры. В документе приведен краткий обзор наиболее заметных изменений и новой функциональности.
- Поддержка Tarantool 3.x;
- Управление кластерами через Tarantool Cluster Manager;
- Изменения при обновлении с Tarantool DB 1.х на 2.0;
- Обновленный модуль dictionary;
- Новые запускаемые примеры:
- Запуск кластера без централизованного хранилища;
- Запуск кластера Tarantool DB в качестве централизованного хранилища конфигураций;
- JSON-пути;
- Разработка модулей Community Edition —
crud,vshardиexpirationd— теперь поддерживается только сообществом. Разработка указанных модулей силами команды Tarantool продолжается в Enterprise-версиях этих модулей. В названия модулей добавлен суффикс-ee:- crud → crud-ee 1.7.0;
- expirationd → expirationd-ee 1.8.0;
- vshard → vshard-ee 0.1.28;
- В Docker-образе изменена директория с файлами Tarantool DB. Теперь файлы хранятся в директории
/app/tarantooldb/.
Подробная информация о продукте приведена в документации Tarantool DB.
Релиз Tarantool DB 2.0 основан на Tarantool 3.2. Это означает, что Tarantool DB 2.0 поддерживает веб-интерфейс Tarantool Cluster Manager и новый подход к конфигурации кластера. Теперь вы можете задать полную топологию кластера с помощью декларативной YAML-конфигурации и хранить все данные конфигурации в едином месте.
До версии Tarantool DB 2.0 конфигурация хранилась на каждом экземпляре кластера и обновлялась кластерной транзакцией. Начиная с версии Tarantool DB 2.0, поддерживается использование централизованного хранилища конфигураций. Данные конфигурации при этом хранятся в едином месте — в хранилище на базе etcd или Tarantool. Все изменения конфигурации экземпляры кластера получают из этого централизованного хранилища. Новый способ хранения позволяет строить большие кластеры, делает более удобным управление master-узлами и отслеживание состояния основного кластера.
Начиная с Tarantool DB 2.0, в качестве веб-интерфейса кластера Tarantool DB используется Tarantool Cluster Manager, или TCM. Tarantool Cluster Manager — это административная панель для настройки и отслеживания кластеров, а также управления ими. TCM поддерживает только те кластеры Tarantool EE, которые используют централизованное хранилище конфигураций на базе etcd или Tarantool.
TCM позволяет выполнять широкий спектр задач, в их числе:
- управление несколькими кластерами одновременно;
- создание и изменение конфигурации кластера;
- выполнение команд в интерактивном режиме на конкретных экземплярах;
- отслеживание статуса кластеров и отдельных экземпляров;
- управление доступом на основе ролей;
- LDAP-авторизация.

Подробная информация о TCM приведена в документации Tarantool.
В Tarantool DB 2.0 внесен ряд заметных изменений в сравнении с версиями 1.x:
Изменения в работе словарей, внесенные в Tarantool DB 2.0, описаны отдельно в разделе ссылка.
Начиная с Tarantool DB 2.0, есть только два способа загрузки конфигурации в кластер:
- с помощью утилиты tt CLI;
- через веб-интерфейс Tarantool Cluster Manager.
Начиная с Tarantool DB 2.0, обновление конфигурации через HTTP API или Lua API недоступно.
Узнать больше о конфигурации кластера можно в разделе Конфигурация кластера и в документации Tarantool.
Начиная с версии Tarantool DB 2.0, изменились процессы запуска кластера и миграций. Клиентские утилиты, которые использовались для этих целей до версии 2.0.0, устарели и были удалены. Удаленные утилиты:
bootstrap.sh— настройка топологии кластера. В Tarantool DB 2.0 настроить топологию кластера можно через централизованную конфигурацию. Топология кластера указывается в конфигурации и применяется сразу после запуска узлов кластера. Дополнительных действий при этом не требуется;migrate.sh— загрузка и применение миграций. Начиная с Tarantool DB 2.0, для загрузки и применения миграций вместоmigrate.shиспользуется утилита tt CLI или TCM;health_check.sh— проверка здоровья кластера. Скрипт был нужен для утилитmigrate.shиbootstrap.sh;java_make_settings.sh— создание файла конфигурации для загрузки Java-коннектора. Начиная с версии 2.0, загрузить Java-коннектор с сайта Tarantool можно с помощью утилитыdownload_java_tarantool.sh.
Утилиты, добавленные в Tarantool DB 2.0:
wait_config_ready.sh— ожидание окончания загрузки конфигурации;wait_etcd_ready.sh— ожидание готовности узла etcd-кластера;wait_instance_ready.sh— ожидание готовности узла кластера Tarantool DB;download_java_tarantool.sh— загрузка Java-коннектора с сайта tarantool.io.
Начиная с Tarantool DB 2.0, удалены технологические роли vshard-router и vshard-storage.
Теперь для настройки модуля шардирования используется раздел
sharding в конфигурации кластера.
Пример
sharding:bucket_count: 30000
В Tarantool DB 2.0 обновлен модуль для работы со словарями — таблицами, хранящими одинаковые данные на разных узлах кластера. Модуль обновлен до версии 2.3.2. Начиная с Tarantool DB 2.0, в работу словарей внесены следующие изменения:
- Изменён подход к хранению ролей.
Теперь имена ролей имеют вид
roles.*. Для удобства перехода старые роли сохранены и имеют такую же функциональность, как и новые:dictionary.roles.router→roles.dictionary-router;dictionary.roles.storage→roles.dictionary-storage;
- Изменен формат названий методов модуля. Tarantool DB 2.0 поддерживает как новый формат названий методов API (
dictionary_router_get()), так и старый (dictionary_router.get()). Методы, добавленные в версии 2.0, поддерживают оба формата названий. Сравнительная таблица названий методов в старом и новом форматах приведена в разделе Модуль dictionary; - Добавлены новые методы модуля
dictionary:- dictionary_check_key_consistency() — вычислить хэш одного ключа для каждого узла со словарем;
- dictionary_wait_key_consistency() — ждать, когда данные по ключу на всех узлах со словарями станут одинаковыми;
- dictionary_notify_neighbors() — выполнить асинхронную попытку оповестить ближайший доступный экземпляр о новых данных;
- Добавлены опции конфигурации словарей:
- update_instances_list_period — частота обновления списка узлов;
- connect_timeout — время ожидания установки соединения в секундах;
- Удалена опция конфигурации словарей
logging.
Методы модуля dictionary используются на узлах с включенной технологической ролью dictionary.roles.router или dictionary.roles.storage.
Узнать больше о работе со словарями можно в разделе Начало работы с модулем dictionary.
Для удобства в Tarantool DB используются готовые примеры на основе Docker Compose, которые позволяют быстро запустить и попробовать ту или иную функциональность. В Tarantool DB 2.0 добавлены следующие запускаемые примеры:
- Кластер Tarantool DB как централизованное хранилище конфигураций
- Запуск кластера без централизованной конфигурации
- JSON-пути
Tarantool DB 2.0 поддерживает использование централизованного хранилища на базе Tarantool. Хранилище конфигураций на базе Tarantool — это набор реплик, который хранит конфигурацию кластера в синхронных спейсах. Узнать больше о хранилище конфигураций на базе Tarantool можно в документации Tarantool.
Этот способ развертывания кластера описан в новом примере tdb_as_config_storage. В примере запущены два кластера:
- основной кластер Tarantool DB;
- вспомогательный кластер Tarantool DB, который выступает в роли централизованного хранилища конфигураций.
Чтобы узлы в наборе реплик Tarantool действовали как хранилище конфигураций, для узлов задана технологическая роль config.storage. Конфигурация узлов при этом может выглядеть так:
groups:storages:roles:- config.storage- roles.metrics-exportroles_cfg:config.storage:status_check_interval: 3
Tarantool DB 2.0 позволяет развернуть кластер Tarantool DB без централизованной конфигурации etcd или Tarantool. Попробовать такой способ запуска кластера можно в новом примере up_without_etcd. Работа через веб-интерфейс TCM при этом способе запуска недоступна. Для подключения к узлу и работы с данными используется утилита tt CLI.
Tarantool DB 2.0 поддерживает обновление данных в спейсе с помощью JSON-путей. Инструкция по работе с JSON-путями приведена в новом запускаемом примере json_path.
Узнать больше о JSON-путях можно в соответствующем разделе документации Tarantool.