Конференция завершена. Ждем вас на Saint HighLoad++ в следующий раз!

Синхронная репликация и выборы лидера в Tarantool: как попытка следовать Raft привела к собственному алгоритму Базы данных и системы хранения

Доклад принят в программу конференции
Сергей Петренко
Tarantool

Занимается разработкой репликации в Tarantool.

Тезисы

Тарантул долгое время поддерживал асинхронную мастер-мастер-репликацию.
В случаях, когда от системы требовалась повышенная надёжность, приходилось реализовывать собственные решения (известные под собирательным названием “wait for quorum”), позволявшие получить часть гарантий синхронной репликации. Этих техник часто было недостаточно: они не позволяли справиться с грязными чтениями, а также откатить транзакцию, которая не смогла набрать кворум.

Также не существовало встроенного в сервер механизма выборов лидера. Приходилось обходиться самописными решениями.

Со временем мы поняли, что необходимо поддержать синхронную репликацию и выборы лидера в ядре Тарантула. Синхронная репликация поддерживается, начиная с версии 2.5, а выборы лидера появились в версии 2.6, выпущенной в сентябре 2020.

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

Об этих отклонениях от протокола и багах, которые они породили, вы услышите в докладе.

Другие доклады секции Базы данных и системы хранения