Введение

Семейство протоколов для решения консенсуса Paxos - это семейство протоколов для решения консенсуса в сети ненадежных или ошибочных процессоров. Консенсус - это процесс согласования одного результата среди группы участников. Эта проблема становится сложной, когда участники или их коммуникации могут испытывать сбои.

Графическое представление потока сообщений в базовом Paxos

На следующих диаграммах представлены несколько случаев/ситуаций применения базового протокола Paxos. Некоторые случаи показывают, как протокол Basic Paxos справляется с отказом некоторых (избыточных) компонентов распределенной системы. Обратите внимание, что возвращенные значения в сообщении Promise являются "нулевыми" при первом предложении (поскольку ни один Acceptor не принимал значение ранее в этом раунде).

Основные Paxos без сбоев

На диаграмме ниже 1 клиент, 1 предлагающий, 3 принимающих (то есть размер кворума равен 3) и 2 учащихся (представленные двумя вертикальными линиями). На этой диаграмме представлен случай первого раунда, который является успешным (т.е. ни один процесс в сети не выходит из строя). Здесь V - последний из (Va, Vb, Vc).

Случаи ошибок в базовых Paxos

Самые простые случаи ошибок - это неудача приемника (когда кворум приемников остается в живых) и неудача избыточного учащегося. В этих случаях протокол не требует "восстановления" (то есть он все еще успешен): не требуются дополнительные раунды или сообщения, как показано ниже (на следующих двух диаграммах/случаях).

Мульти-Паксо

Типичное развертывание Paxos требует непрерывного потока согласованных значений, действующих как команды для распределенной машины состояния. Если каждая команда является результатом одного экземпляра протокола Basic Paxos, это приведет к значительному объему накладных расходов. Если лидер относительно стабилен, фаза 1 становится ненужной. Таким образом, можно пропустить фазу 1 для будущих экземпляров протокола с тем же лидером. Для этого в круглый номер включается каждое значение, которое увеличивается в каждом раунде одним и тем же лидером. Multi Paxos сокращает задержку сообщений без ошибок (предложение для обучения) с 4 задержек до 2 задержек.

Оптимизация

Можно провести ряд оптимизаций для сокращения количества обмениваемых сообщений, улучшения производительности протокола и т. д. Некоторые из этих оптимизаций приведены ниже. "Мы можем сохранить сообщения за счет дополнительной задержки сообщения, имея одного выдающегося учащегося, который информирует других учащихся, когда он узнает, что значение было выбрано. Затем приемники отправляют сообщения "Принято" только выделенному ученику. В большинстве приложений роль лидера и отличительного ученика выполняется одним и тем же процессором.

Византийский Паксос

Paxos также может быть расширен для поддержки произвольных неудач участников, включая ложь, изготовление сообщений, сговор с другими участниками, избирательное неучастие и т. Д. Эти типы неудач называются византийскими неудачами, в честь решения, популяризированного Лампортом. Введённый Кастро и Лисковым добавляет дополнительное сообщение (Verify), которое распространяет знания и проверяет действия других процессоров: