Мнение Программного комитета о докладе
Tarantool, Raft, и что делать, если у вас случился Split Brain.
Доклад принят в программу конференции
Tarantool, Raft, и что делать, если у вас случился Split Brain.
Многие системы, стараясь описать свое поведение в ненадежной сети, прибегают к терминам CAP-теоремы и описывают себя либо как AP, либо как CP.
Алгоритм Raft является классическим примером CP — обеспечивает линеаризуемость в случае разделения сети, но это в определенных случаях приводит к временной потере доступности и на запись, и на чтение до восстановления связности.
Да, на бумаге всё хорошо. Берём нечётное количество узлов и наслаждаемся работоспособностью кластера и консистентностью данных до тех пор, пока большая часть узлов работает. Однако, эта схема использования идёт вразрез с самой популярной схемой установки БД: равное число узлов в двух ЦОД-ах. Для Raft это значит, что потеря одного ЦОД-а сразу приведёт к недоступности кластера на запись.
Отсюда возникает необходимость переключения между надёжностью и доступностью: если пользователь видит, что один из двух ЦОД-ов неработоспособен, он может решить продолжить обслуживать запросы в живом ЦОД-е без участия второго ЦОД-а, то есть превратить CP-систему в AP. Мы дали пользователю такую возможность в реализации Raft в Tarantool и столкнулись с условиями потери консистентности данных, с которыми бы никогда не встретился канонический Raft.
Такой режим работы не дает гарантий Raft, поскольку человеческая ошибка может привести к тому, что этот режим будет включен в двух ЦОД-ах одновременно. Это уже приведет к возникновению двух противоречащих друг другу версий наборов данных. Значит, разрешая такое понижение надежности, мы должны научиться обнаруживать различия в наборах данных и предупреждать пользователя об этих различиях, не давая репликации соединить два противоречащих набора.
Нам удалось сделать это благодаря маркерам лидерства в журнале. Во время нормальной работы маркеры лидерства выстраиваются в согласованную цепочку, позволяя проследить историю смены лидеров до самого начала журнала.
Если же во время разделения сети человеческая ошибка приводит к возникновению двух независимых наборов данных, маркеры лидерства в двух наборах, начиная с какого-то общего предка, составляют две разделившиеся цепочки.
Если мы умеем находить расхождения в цепочках маркеров лидерства, мы умеем находить противоречащие участки журналов. Это позволяет отклонять репликацию конфликтующего набора данных и эскалировать проблему до пользователя.
В этом докладе поговорим о методах, которые мы применили, чтобы обнаруживать такие расхождения и обеспечивать консистентность данных после периода работы в разделенной сети.
Занимается разработкой репликации в Tarantool.
Tarantool, VK
Базы данных и системы хранения
Крупнейшая профессиональная конференция для разработчиков высоконагруженных систем
Варианты участия
Офлайн-участие
Стоимость конференции постоянно растет — чем ближе к мероприятию, тем дороже.
Текущая стоимость билета — 65000 ₽
Онлайн-участие
Все потоки с докладами (но не потоки с митапами) будут транслироваться нами онлайн.
Текущая стоимость билета — 32500 ₽
Корпоративное участие (от 10 билетов)
Для заказа от 10 билетов на очное или онлайн-участие, свяжитесь с нами по partners@ontico.ru.
Оставить заявкуПередумали покупать?
Расскажите, почему
Благодарим вас за ответ!
Видео, доступные к покупке
Видео FrontendConf 2023
2 октября 2023 — 3 ноября 2023
32000 ₽
Видео HighLoad++ 2023
27 и 28 ноября 2023
32000 ₽
Видео TeamLead Conf++ 2023
30 ноября 2023 и 1 декабря 2023
32000 ₽
Видео DevOpsConf 2024
4 и 5 марта 2024
37500 ₽
Видео Saint HighLoad++ 2024
24 и 25 июня 2024
39500 ₽
Видео Saint TeamLead Conf 2024
27 и 28 июня 2024
37500 ₽
Видео AiConf 2024
26 и 27 сентября 2024
37500 ₽
Видео FrontendConf 2024
30 сентября 2024 и 1 октября 2024
37500 ₽
Видео Industrial++ 2024
21 и 22 октября 2024
37500 ₽