Алгоритм Паксос
Паксос — семейство протоколов для решения задачи консенсуса в сети ненадёжных вычислителей. Консенсус — процесс получения согласованного результата группой участников, основная проблема — наличие помех в среде передачи данных.[1] Данная задача используется, например, для утверждения транзакций в распределённых системах.
Протоколы решения задачи консенсуса — базовый элемент автоматного подхода в распределённых вычислениях, предложенного Лесли Лампортом[2] и исследованного далее Ф. Шнайдером.[1]
Автоматный подход — метод реализации алгоритма на распределённой системе, сохраняющий устойчивость к отказам. Это системный подход, не допускающий неосознанного внесения ошибок. Принципиальный подход Лампорта рассматривает все возможные случаи.
Семейство протоколов Паксос было создано и описано в 1990 г., но не было опубликовано в научной литературе до 1998 г. Однако, исследования на данную тематику начались задолго до реализации протокола. Например, автоматная репликация, подход к программированию на основе модели виртуальной синхронизации, предложенной в 1985 г.
Семейство протоколов Паксос рассматривает варианты решения задачи консенсуса в зависимости от количества вычислителей, количества задержек для получения результата, активности участников, количества отправленных сообщений и типов отказов. Результат отказоустойчивого консенсуса не определён (т.е., при определённых условиях вычислители не смогут прийти к согласию), однако, гарантируется безопасность (консистентность), а условия, при которых консенсус невозможен, очень редки.
[править] О названии
Название связано с системой права греческого острова Паксос.
[править] Свойства безопасности и живучести
Алгоритмы данного семейства гарантируют 3 следующих показателя:
- Нетривиальность — решение может быть принято только из заранее заданного множества исходов;
- Консистентность — принятое решение совпадает у всех вычислителей, в нём участвовавших;
- Живучесть(C,L) — Если было предложено решение C, то рано или поздно вычислитель L примет какое-либо решение (при условии наличия достаточного количества работающих вычислителей).
[править] Предусловия
[править] Вычислители
[править] Сеть
[править] Число процессоров
[править] Роли
[править] Кворум
[править] Предложенное число и согласованное значение
[править] Примеры реализации
[править] Простой паксос
[править] Мульти-паксос
[править] Оптимизации
[править] Дешёвый паксос
[править] Сокращённый паксос
[править] Обобщённый паксос
[править] Византийский паксос
[править] Остановимый паксос
Остановимый конечный автомат — тот, который может остановить работу по определённой команде. Такие автоматы используются, например, для реализации изменения конфигурации в реплицированном автомате: реконфигурируемый автомат реализуется как последовательность остановимых автоматов, каждый работает в своей конфигурации. Остановимый паксос реализует реплицируемый остановимый конечный автомат.
[править] Промышленное использование
- Данное семейство алгоритмов используется в распределённой службе блокировок Chubby компании Google, используемой, в свою очередь, в BigTable.
- Microsoft использует паксос в своей системе автоматического управления кластерами.
[править] См. также
[править] Ссылки
- ↑ 1 2 Pease, Marshall; Robert Shostak, Leslie Lamport (April 1980). “Reaching Agreement in the Presence of Faults”. Journal of the Association for Computing Machinery 27 (2). Проверено 2007-02-02.
- ↑ Lamport, Leslie (July 1978). “Time, Clocks and the Ordering of Events in a Distributed System”. Communications of the ACM 21 (7): 558–565. DOI:10.1145/359545.359563. Проверено 2007-02-02.
