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 ответов

31 просмотр

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

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

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

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

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

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

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

Да

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

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

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

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

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта