215 похожих чатов

Tarantool 2.6 — Синхронная репликация, Raft и MVCC! Эти новые возможности

Tarantool уже доступны в версии 2.6. Мы подробно расскажем про каждую тему на следующей неделе на нашем Youtube-канале.

2, 3 и 5 ноября в 18:00 МСК подключайтесь сюда https://www.youtube.com/c/Tarantool, в следующем сообщении прикладываю .ics файлы для календаря.

Читайте подробнее про изменения https://github.com/tarantool/tarantool/releases/tag/2.6.1

---

Транзакционный менеджер в in-memory движке, наконец-то полноценный MVCC!

Многие в курсе, что Tarantool реализует кооперативную многозадачность при помощи примитива файбер, который является одной из реализаций легковесных потоков.

В старых версиях Tarantool, когда файбер с открытой транзакцией передавал управление, транзакция автоматически откатывалась. Теперь транзакция не откатывается, а остается открытой и может быть закончена при следующей передаче управления файберу! Чтобы это работало, мы добавили новый менеджер транзакций.

Чем так полезен новый транзакционный менеджер?

 Основная цель нового транзакционного менеджера — избавиться от давней проблемы "грязных чтений" транзакций, которые впоследствии не удалось записать на диск из-за отказа. Это повышает уровень изоляции до истинного Serializable при любом исходе. Также это позволяет использовать Tarantool в более привычном для баз данных сценарии, растягивая транзакцию во времени и исполняя транзакции параллельно.

Сейчас новый менеджер работает только под опцией. Следующий шаг — включить его по умолчанию. Мы всерьез думаем о добавлении так называемых cross-engine транзакций. Это когда в одной транзакции можно манипулировать данными из двух движков. Например, когда из холодного хранилища (vinyl) нужно перенести данные в горячее хранилище (memtx).

---

Синхронная репликация (c Raft-ом)

Синхронная репликация на протяжении существования Tarantool была одной из самых (если не самой-самой) востребованных возможностей. Все дело в том, что асинхронная репликация не дает 100% гарантий сохранности данных при работе в кластере, когда происходит смена лидера.

5 лет назад началось проектирование и разработка синхрона на базе популярного алгоритма Raft. За эти пять лет буквально каждый пункт плана пошел под откос. В Tarantool за это время сделали SQL, дисковый движок, шардинг, и многое другое. Состав команды успел смениться почти полностью, включая CTO.

В этом году сам метод разработки был пересмотрен с нуля. Мы сосредоточились на синхроне и его рабочем прототипе, который можно было бы сразу использовать и улучшать. Как результат, теперь в Tarantool представлена синхронная репликация с автоматическими выборами лидера на базе Raft.

С синхронной репликацией хранение данных в кластере получает новый уровень гарантий сохранности. В прошлом отказа одного узла было уже достаточно, чтобы получить риск потери. С синхронной репликацией данные гарантированно выживут, пока больше половины кластера функционирует.

Также пользователям больше не требуется заниматься конфигурацией лидера кластера вручную — надо только следить, кого Tarantool выбирает сам.

На этом путь синхронной репликации еще не окончен. В следующих релизах будут проводиться работы по различным оптимизациям, создание специальных вспомогательных узлов для выборов лидера, и следующая большая разработка — синхронная мастер-мастер репликация без выделенного лидера.

---

А что еще?

- Добавили поддержку tarantool-1.10+ в модуль миграции данных из tarantool-1.5 (migrate). Теперь можно мигрировать на свежие версии Tarantool со старых.
- В queue исправили проблему с автовозвратом задач на старте, добавили возможность запускать очередь на read-only узлах, прояснили сообщения об ошибках.
- Исправили много проблем в коннекторах и модулях.
- Наконец-то добавили форматированный вывод в селектах!

https://github.com/tarantool/tarantool/releases/tag/2.6.1

10 ответов

9 просмотров

А сколько матрас выдержит?... До того как "пружины не начнут вылазить"

сколько версий пока он треснет?

Ну скажем при каком характере нагрузки, похоже ли это на другие базы с mvcc , Он же в первую очередь как крутая снапшотилка задумывался чего небыло у редиски

ну вот да, интересно, при сколких не закрытых транзакциях будет деградация

Так не факт же что количество открытых влияет... вопрос же о чём, что именно влияет, количество открытых или количество прочитанных туплов, или какая нибудь другая формула

А запись будет?

Pavel-Lapaev Автор вопроса

Да

Pavel-Lapaev Автор вопроса

Запись вчерашнего эфира про менеджер транзакций https://www.youtube.com/watch?v=BiF7L2id-TU --- Сегодня в 18:00 МСК говорим про Raft https://youtu.be/xeiMt_guKUY

Привет! Напоминаю, что через час расскажем про RAFT в Тарантуле.

Привет! Через полчаса начинаем рассказ про синхронную репликацию в Тарантуле!

Похожие вопросы

Обсуждают сегодня

Типа вызывать GetParent и проверять на соответствие GetModuleHandle?
The Bird of Hermes
67
Do any of you guys have interesting projects one could join? I'm a Middle Full-Stack developer (JS/TS, React & Node)
Lev Shapiro
40
$res = json_decode($наша строка из респонса); $res1 = array_map(fn($o) => $o->name, $res->breadcrumbs[0]->entities); Как такое будет на Хаскеле?.. В начале весь джейсон, в ко...
Хаскель Моисеевич Гопник
27
В чем сила брат, в NASM или FASM?
Isaac Kleiner
18
Вопрос по диагностике ошибок (я знаю в чем, в данном конкретном примере, я знаю, как исправить, пример модельный, понятно, что в реальности бывает намного запутаннее). module...
ⰄⰎⰋⰐⰐⰑⰛⰤⰧⰧⰩⰄ ⰊⰑⰁⰓⰡⰛⰦⰕⰫ
11
Хтось використовував Vapor на Windows?
Jaroshevskii
15
А чем вам питонисты не угодили?😂
.
79
Есть какой-нибудь для Delphi/FPC T*Compression(Decompression)Stream на базе LZ4/Zstd/любой другой быстрый(и хорошо сжимающий) алгоритм А ещё лучше в pure pascal А ещё лучше од...
notme
52
Тут кста кто-нибудь NeoVim использует?
Simple Sorcerer
13
Оба варианта в целом подходят, но скорее создание конфликтной ситуации (на пустой основе). В прошлый раз он сказал мне про ESP32, я забыл про этот микроконтроллер, ошибся, я п...
КТ315
4
Карта сайта