Tarantool 2.6 — синхронная репликация, Raft и MVCC
В Tarantool 2.6 появились новые инструменты: транзакционный менеджер в in-memory движке с MVCC и синхронная репликация на основе алгоритма Raft. Под катом вы найдёте краткие описания основных нововведений и ссылку на полный список изменений.
Транзакционный менеджер
Как вы знаете, Tarantool реализует кооперативную многозадачность. В нём есть специальная сущность: файбер, который является вариантом coroutine. Ранее, когда coroutine с открытой транзакцией передавала управление дальше, транзакция автоматически откатывалась. Теперь транзакция не откатывается, остается открытой и может быть закончена при следующей передаче управления coroutine. Для этого мы добавили новый менеджер транзакций.
Чем полезен новый транзакционный менеджер? Его основная цель — избавиться от давней проблемы «грязных чтений» транзакций, которые впоследствии не удалось записать на диск из-за отказа. Это повышает уровень изоляции до истинного Serializable при любом исходе. Но также это позволяет использовать Tarantool в более привычном для БД сценарии, растягивая транзакцию во времени и исполняя транзакции параллельно.
Сейчас новый менеджер работает только опционально.
Синхронная репликация
В Tarantool появилась синхронная репликация с автоматическими выборами лидера на основе алгоритма Raft. Благодаря этому хранение данных в кластере получает новый уровень гарантий сохранности. Ранее из-за отказа одного узла возникал риск потери данных, а теперь они гарантированно сохранятся, пока функционирует больше половины кластера.
Также пользователям более не требуется конфигурировать лидера кластера вручную — достаточно следить, кого Tarantool выбирает сам.
А что еще?
- Добавили поддержку tarantool-1.10+ в модуль миграции данных из tarantool-1.5 (migrate). Теперь можно мигрировать на свежие версии Tarantool со старых.
- В queue исправили проблему с отпусканием задач на старте, добавили возможность стартовать в режиме read-only, прояснили сообщения об ошибках.
- Исправили ряд проблем в коннекторах и модулях.
- Добавили форматированный вывод в селектах.
Обычный селект:
Новый селект:
Полный список изменений тут.