我试图理解 paxos 和两阶段提交之间的区别,作为在多台机器之间达成共识的手段。两阶段提交和三阶段提交很容易理解。 3PC 似乎也解决了 2PC 中会阻塞的故障问题。所以我不太明白Paxos要解决什么问题。谁能告诉我 Paxos 到底解决了什么问题?
如果事务管理器失败,2PC 会阻塞,需要人工干预才能重新启动。 3PC 算法(有几种这样的算法)尝试通过在原始管理器失败时选择新的事务管理器来修复 2PC。
只要大多数进程(管理器)正确,Paxos 就不会阻塞。 Paxos实际上解决了更普遍的共识问题,因此,它也可以用来实现事务提交。与 2PC 相比,它需要更多消息,但它对管理器故障具有弹性。与大多数3PC算法相比,Paxos呈现出更简单、更高效的算法(消息延迟最小),并且已被证明是正确的。
Gray 和 Lamport 在一篇优秀的论文中比较了 2PC 和 Paxos,标题为“交易提交共识”。
(在peter的回答中,我认为他正在混合2PC和2PL(两相锁定)。)
2PC是最传统的事务提交协议,为事务原子性的核心提供动力。但它本质上是阻塞的,也就是说,如果事务管理器/协调器在中间发生故障,它将导致协议阻塞,并且没有进程会意识到这一点。需要手动干预来修复协调器。
Paxos是一个分布式共识协议,有多个这样的协调者,如果大多数协调者同意交易完成,那么它就成为一个成功的原子交易。
您应该阅读本文 了解这两种协议如何以更精细的方式区分。在同一篇论文中,Gray 和 Lamport 还介绍了一种协议,即 Paxos 和 2PC 的组合,以获得更快的性能。