Семейство алгоритмов Paxos Евгений Чемерицкий

advertisement
Семейство алгоритмов Paxos
Евгений Чемерицкий
План доклада
§
§
§
2
История создания
Конструирование алгоритма Paxos
Модификации алгоритма
Алгоритм Paxos основан на
алгоритме
Синода
[The Part-Time
Parliament, 1998]
§
§
3
В начале прошлого
тысячелетия
Paxos
процветало
государство Паксонов
(Paxons) с
парламентарной
формой правления
Парламентарии
Paxons
Алгоритм Paxos основан на
алгоритме
Синода
[The Part-Time
Parliament, 1998]
§
§
4
У каждого
парламентария была
своя собственная
книга декретов
Свои обязанности
парламентарии
совмещали с
управлением
Распределённая система как
конечный автомат
С1
S1
С2
St1
St2
St3
St1
St2
St3
S1
5
Задача обеспечения
согласованного выполнения
С1
S1
6
St1
S1
С2
S1
St2
St3
Алгоритмы Консенсуса
Задана группа объектов,
делающих взаимоисключающие
предложения
§
Цель алгоритма консенсуса –
выбрать единственное
St1
и St2
St3
S1предложение
оповестить об этом группу
§
S2
7
St1
St2
St3
Статьи по Paxos
§
§
§
§
§
8
2001 - Paxos made simple
2007 - Paxos made live
2007 - Paxos made practical
2009 - Paxos made code
2011 - Paxos made moderately
complex
Распределённая система в роли
парламента
9
Распределённая система в роли
парламента
10
[глобальные часы вводятся лишь для
удобства описания алгоритма]
Требования к алгоритму
§
Безопасность
§
§
§
§
Алгоритм выбирает из поступивших
значений
Выбирается единственное значение
Процесс никогда не считает, что
значение выбрано, если это на
данный момент не так
Живучесть
§
11
[Выбираем значение переменной]
§
[Оригинальный
Paxos невсегда
византийский]
Алгоритм выбирает
значение
Роли объектов группы
§
§
§
12
Proposer делает предложение
[значение]
Acceptor принимает предложение
[значение]
P1
A1
L1
Learner узнаёт о сделанном выборе
P1
A1
L1
P1
A1
L1
Конструируем алгоритм (1)
P1
A1
L1
P2
Среди объектов только один Acceptor
13
Конструируем алгоритм (1)
P1
A2
A1
P2
L1
A3
Среди объектов только один Acceptor
Acceptor аварийно завершается
=> Существует множество acceptor-ов
Опр. Значение выбрано, если оно принято
большинством acceptor-ов
14
Конструируем алгоритм (2)
P1
A2
A1
P2
L1
A3
Значение должно быть выбрано, даже если оно
единственное
=> Каждый Acceptor принимает первое
поступившее к нему значение
15
Конструируем алгоритм (3)
P1
A2
A1
P2
L1
???
A3
Каждый Acceptor может принять поступившее
значение, но ни одно из них не будет выбрано
=> Acceptor может принимать более одного
значения
16
Конструируем алгоритм (4)
P1
A2
A1
P2
17
L1
???
A3
=> Могут быть выбраны сразу несколько
предложений
Конструируем алгоритм (5)
Как гарантировать, что не будут
выбраны разных значения?
Принятые предложения
Каждое выбранное предложение должно быть
принято хотя бы одним acceptor-ом
18
T2 -> T1
Конструируем алгоритм
L1
A2
P1
A1
P2
???
A3
Time
19
T2 -> T1
Конструируем алгоритм
L1
A2
P1
A1
P2
???
A3
Time
20
T3 -> T2 -> T1
Конструируем алгоритм
21
Accept
Prepare
Алгоритм proposer-a
22
Алгоритм acceptor-а
23
Acceptor получает запросы prepare &
accept
Безопасность алгоритма не
нарушаются если:
§
Не отвечать на запросы
§
Отвечать только на prepare
§
Отвечать на accept, если не отвечал
на prepare для предложения с
большим номером
Алгоритм acceptor-а
С учётом оптимизации acceptor должен знать
лишь наибольший номер предложения, на чей
propose-запрос он ответил, и предложение с
наибольшим номером, которое он принял
24
Эти данные нужно хранить в
постоянной памяти, иначе аварийное
завершение и восстановление могут
привести
к
нарушению
безопасности
Proposer может не сохранять данные
алгоритма
Алгоритм Paxos
25
Получение значения
L1
A2
L3
A1
L2
A3
L4
A2
L3
L1
L4
L2
A1
A3
26
Продвижение алгоритма
P1
A1
P2
Для продвижения необходим процесс-лидер
27
Процесс-Лидер
L1
St1
St2
28
P2
P1
A1
Оптимизации
Proposer-у достаточно
пересылать предложение
большинству acceptor-ов
A2
P1
Вместо значения можно
пересылать его хэш
P1
P2
Лидер
29
A1
A3
P3
Можно использовать
координатор,
который будет
следить за лидером
Модификации Paxos
§
§
§
§
§
§
§
§
30
Multi-Paxos [1998]
Cheap Paxos [2004]
Fast Paxos [2004(2001)]
Storage-free Paxos [2001]
Disk Paxos [2001]
Generalized Paxos [2005]
Byzantine Paxos [2011]
Stoppable Paxos [2011]
Multi-Paxos
cmd1
cmd2
cmd3
cmd4
31
#1
#2
#3
#4
#5
#6
Paxos используется
для
упорядочивания
потока команд
поступающих на
разные машины
Каждую команду
можно определять
независимо друг от
Multi-Paxos
P1
St1
St21
St22
32
A1
prepare n
promise n
Paxos используется
для
упорядочивания
потока команд
поступающих на
разные машины
Каждую команду
можно определять
независимо друг от
Cheap Paxos
33
Fast Paxos
Лидер
P2
St1
P1
A1
A1
prepare ANY
St2
34
[Исправление ошибок]
Storage-free & Disk Paxos
§
§
35
Acceptor должны сохранять в
постоянной памяти номер
предложения, на чей prepare
запрос он ответил, и принятое
предложение с наибольшим
номером
Storage-free Paxos позволяет
получать необходимые данные от
других acceptor-ов
Generalized Paxos
Некоторые последовательности
переходов конечного автомата
приводят в одно и то же состояние,
поэтому могут быть выполнены в
произвольном порядке
§
St1
может
St2 принять
St3сразу St4
S1Алгоритм
несколько операций, не заботясь о
порядке их выполнения
§
S2
36
St1
St3
St2
St4
Byzantine Paxos
37
Спасибо за внимание!
38
This is
PAXOS!
39
Download