Upload
ontico
View
1.309
Download
1
Embed Size (px)
Citation preview
Про HA-кластеры и нашу реализацию в Tarantool/SilverBox
Юрий Востриков, Mail.Ru Group
РИТ++, 03/04/2012
Что такое Tarantool/SilverBox
I FrameworkI InMemory DBI WALI Tuple based
(𝑎1, 𝑎2, 𝑎3, ..., 𝑎𝑛)
Варианты обычной репликации
I Синхронная — АсинхроннаяI Row based — Command basedI Master-Master – Master-Slave
Варианты обычной репликации
I Синхронная — Асинхроннаяreplica
master
I Row based — Command basedI Master-Master – Master-Slave
Варианты обычной репликации
I Синхронная — Асинхроннаяreplica
master
replica
master
I Row based — Command basedI Master-Master – Master-Slave
Варианты обычной репликации
I Синхронная — Асинхроннаяreplica
master
replica
master
I Row based — Command basedupdate users set passwd = ’secret’;
I Master-Master – Master-Slave
Как репликация сделана в Tarantool/SilverBox
I АсинхроннаяI Command based, но: одна команда = одна строкаI Master-Slave
Кластеры высокой доступности
𝑐𝑙𝑖𝑒𝑛𝑡1
𝑐𝑙𝑖𝑒𝑛𝑡2
𝑐𝑙𝑖𝑒𝑛𝑡𝑛
𝑟𝑒𝑞𝑢𝑒𝑠𝑡/𝑟𝑒𝑠𝑝𝑜𝑛𝑠𝑒𝑟𝑒𝑞𝑢𝑒𝑠𝑡/𝑟𝑒𝑠𝑝𝑜𝑛𝑠𝑒
𝑟𝑒𝑞𝑢𝑒𝑠𝑡/𝑟𝑒𝑠𝑝𝑜𝑛𝑠𝑒
хитрая магия
Кластеры высокой доступности
𝑐𝑙𝑖𝑒𝑛𝑡1
𝑐𝑙𝑖𝑒𝑛𝑡2
𝑐𝑙𝑖𝑒𝑛𝑡𝑛
𝑟𝑒𝑞𝑢𝑒𝑠𝑡/𝑟𝑒𝑠𝑝𝑜𝑛𝑠𝑒𝑟𝑒𝑞𝑢𝑒𝑠𝑡/𝑟𝑒𝑠𝑝𝑜𝑛𝑠𝑒
𝑟𝑒𝑞𝑢𝑒𝑠𝑡/𝑟𝑒𝑠𝑝𝑜𝑛𝑠𝑒
хитрая магия2PC/3PC/Paxos
Теорема Брюера
I Consistency (согласованность данных)I Availability (доступность)I Partition tolerance (устойчивость к разделению)
𝑃𝑇 ⇒ ¬(𝐴 ∧ 𝐶)
Теорема Брюера
I Consistency (согласованность данных)I Availability (доступность)I Partition tolerance (устойчивость к разделению)
𝑃𝑇 ⇒ ¬(𝐴 ∧ 𝐶)
Выбираем только между PA или PC
Типы ошибок
I Fail stop (отказ без восстановления)I Fail recover (отказ с восстановлением)I Byzantine fail (византийский отказ)
Консенсус
Распределeнная система = консенсус
Консенсус
Распределeнная система = консенсус
FLP result: в асинхронных сетях при наличие сбоев консенсус можетдостигаться бесконечно долго.
2-х фазный коммит
𝑐𝑜𝑜𝑟𝑑𝑖𝑛𝑎𝑡𝑜𝑟 𝑛𝑜𝑑𝑒
𝑝𝑟𝑜𝑝𝑜𝑠𝑒
𝑣𝑜𝑡𝑒
𝑐𝑜𝑚𝑚𝑖𝑡/𝑎𝑏𝑜𝑟𝑡
𝑎𝑐𝑘
2-х фазный коммит
𝑐𝑜𝑜𝑟𝑑𝑖𝑛𝑎𝑡𝑜𝑟 𝑛𝑜𝑑𝑒
𝑝𝑟𝑜𝑝𝑜𝑠𝑒
𝑣𝑜𝑡𝑒
Нельзя 𝑐𝑜𝑚𝑚𝑖𝑡: 𝑛𝑜𝑑𝑒 могпроголосовать за 𝑎𝑏𝑜𝑟𝑡
𝑐𝑜𝑜𝑟𝑑𝑖𝑛𝑎𝑡𝑜𝑟 𝑛𝑜𝑑𝑒
𝑝𝑟𝑜𝑝𝑜𝑠𝑒
𝑣𝑜𝑡𝑒
𝑐𝑜𝑚𝑚𝑖𝑡
Нельзя 𝑎𝑏𝑜𝑟𝑡: 𝑛𝑜𝑑𝑒 ужезавершил 𝑐𝑜𝑚𝑚𝑖𝑡
3-х фазный коммит
𝑐𝑜𝑜𝑟𝑑𝑖𝑛𝑎𝑡𝑜𝑟 𝑛𝑜𝑑𝑒
𝑝𝑟𝑜𝑝𝑜𝑠𝑒
𝑣𝑜𝑡𝑒
𝑝𝑟𝑒𝑝𝑎𝑟𝑒
𝑎𝑐𝑐𝑒𝑝𝑡
𝑐𝑜𝑚𝑚𝑖𝑡/𝑎𝑏𝑜𝑟𝑡
I Хоть один получил 𝑐𝑜𝑚𝑚𝑖𝑡 ⇒ все ответили 𝑎𝑐𝑐𝑒𝑝𝑡
I Хотя бы один не получил 𝑝𝑟𝑒𝑝𝑎𝑟𝑒 ⇒ никто не получил 𝑐𝑜𝑚𝑚𝑖𝑡
Paxos
𝑝𝑟𝑜𝑝𝑜𝑠𝑒𝑟 𝑎𝑐𝑐𝑒𝑝𝑡𝑜𝑟 𝑙𝑒𝑎𝑟𝑛𝑒𝑟
𝑝𝑟𝑜𝑝𝑜𝑠𝑒(𝑛)
𝑝𝑟𝑜𝑚𝑖𝑠𝑒(𝑛,∅|𝑣)
𝑎𝑐𝑐𝑒𝑝𝑡(𝑛, 𝑣)
𝑎𝑐𝑐𝑒𝑝𝑡𝑒𝑑(𝑛, 𝑣)
Paxos
𝑚 > 𝑛
𝑎𝑐𝑐𝑒𝑝𝑡𝑜𝑟
𝑝𝑟𝑜𝑝𝑜𝑠𝑒𝑟
𝑝𝑟𝑜𝑝𝑜𝑠𝑒𝑟
𝑎𝑐𝑐𝑒𝑝𝑡
(𝑛,𝑣1)
𝑝𝑟𝑜𝑝𝑜𝑠𝑒(𝑚)
𝑝𝑟𝑜𝑚𝑖𝑠𝑒(𝑚, 𝑣1)
MultiPaxos
1
2
𝑛
𝑝𝑟𝑜𝑝𝑜𝑠𝑒(1, 𝑛) 𝑝𝑟𝑜𝑚𝑖𝑠𝑒(1, 𝑛, 𝑣) 𝑎𝑐𝑐𝑒𝑝𝑡(1, 𝑛, 𝑣)
𝑝𝑟𝑜𝑝𝑜𝑠𝑒(2, 𝑛) 𝑝𝑟𝑜𝑚𝑖𝑠𝑒(2, 𝑛, 𝑣) 𝑎𝑐𝑐𝑒𝑝𝑡(2, 𝑛, 𝑣)
Paxos
Почему именно Paxos
I доказана корректность в асинхронных сетяхI имеет минимально возможную задержкуI нет выделенной фазы восстановаления
Выбор лидера
I Часы сильно не уходят.I Лидер выбирается на 𝑛 секунд.I Перевыборы начинаются через 𝑛− 𝛿 секунд.I Лидер заблаговременно открывает несколько копий протокола.
𝑐𝑙𝑜𝑠𝑒𝑑 𝑎𝑐𝑡𝑖𝑣𝑒 𝑜𝑝𝑒𝑛
𝑐𝑙𝑜𝑠𝑒𝑑𝑙𝑖𝑣𝑒𝑜𝑝𝑒𝑛
Быстрый старт
Используем обычную асинхронную репликацию.Финальный раунд с использованием Paxos
𝑙𝑜𝑔 𝑟𝑒𝑝𝑙𝑎𝑦 𝑝𝑎𝑥𝑜𝑠
𝑐𝑙𝑜𝑠𝑒𝑑𝑙𝑖𝑣𝑒
«Грязные» чтения
𝑙𝑒𝑎𝑟𝑛𝑒𝑟𝑙𝑒𝑎𝑑𝑒𝑟
𝑙𝑒𝑎𝑟𝑛𝑒𝑟1
𝑠𝑒𝑚𝑖𝑠𝑡𝑎𝑙𝑒
𝑙𝑒𝑎𝑟𝑛𝑒𝑟2
𝑠𝑡𝑎𝑙𝑒
Результаты и планы на будущее
I WAL или PaxosWAL
I Единая конфигурацияI Шардинг
Open Source
http://opensource.mail.ru/http://github.com/mailru/[email protected]
Спасибо!
Вопросы?