2014-12-04 2 views
15

Я пытаюсь понять разницу между paxos и двухступенчатой ​​фиксацией как средство достижения консенсуса между несколькими машинами. Двухфазное принятие и трехфазное принятие очень легко понять. Также кажется, что 3PC решает проблему сбоя, которая блокируется в 2PC. Поэтому я не совсем понимаю, что Паксос решает. Может ли кто-нибудь осветить меня о том, что проблема Paxos точно решает?Paxos vs two phase commit

ответ

23

2PC блокируется, если менеджер транзакций терпит неудачу, требуя вмешательства человека для перезапуска. 3PC (есть несколько таких алгоритмов), попытайтесь исправить 2PC путем выбора нового менеджера транзакций, когда исходный менеджер терпит неудачу.

Paxos не блокируется, если большинство процессов (менеджеров) являются правильными. Paxos фактически решает более общую проблему консенсуса, следовательно, его можно использовать для реализации транзакционного фиксации. По сравнению с 2PC он требует больше сообщений, но он устойчив к сбоям менеджера. По сравнению с большинством алгоритмов 3PC, Paxos предоставляет более простой и эффективный алгоритм (минимальная задержка сообщения), и было доказано, что оно является правильным.

Серый и Lamport сравнивают 2PC и Paxos в отличном paper под названием «Консенсус по транзакционной фиксации».

(В ответе питера, я думаю, что он смешивает 2PC с 2PL (двухфазный запирающим).)

+0

А потом три является Плот, который является более легким вариантом Паксоса. В настоящее время существует множество систем с открытым исходным кодом, использующих плот. Такие, как Etcd, Consul, Cockroachdb и т. Д. – Artem