39

我试图理解 paxos 和两阶段提交之间的区别,作为在多台机器之间达成共识的手段。两阶段提交和三阶段提交很容易理解。3PC似乎也解决了2PC阻塞的故障问题。所以我真的不明白 Paxos 解决了什么问题。谁能告诉我 Paxos 究竟解决了什么问题?

4

2 回答 2

42

如果事务管理器发生故障,2PC 会阻塞,需要人工干预才能重新启动。3PC 算法(有几种这样的算法)试图通过在原始管理器失败时选择新的事务管理器来修复 2PC。

只要大多数进程(管理器)是正确的,Paxos 就不会阻塞。Paxos 实际上解决了更普遍的共识问题,因此,它也可以用于实现事务提交。与 2PC 相比,它需要更多消息,但它对管理器故障具有弹性。与大多数 3PC 算法相比,Paxos 呈现了一种更简单、更高效的算法(最小的消息延迟),并且已被证明是正确的。

Gray 和 Lamport 在一篇名为“Consensus on Transaction Commit”的优秀论文中比较了 2PC 和 Paxos。

(在彼得的回答中,我认为他是在混合 2PC 和 2PL(两相锁定)。)

于 2014-12-05T09:27:34.097 回答
5

2-PC是最传统的事务提交协议,是事务原子性的核心。但它本质上是阻塞的,即如果事务管理器/协调器在两者之​​间发生故障,它将导致协议阻塞并且没有进程会意识到它。它需要人工干预来修复协调器。

虽然Paxos作为分布式共识协议有多个这样的协调器,如果大多数协调器同意事务完成,它就会成为一个成功的原子事务。

您应该阅读https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/tr-2003-96.pdf 以了解这两种协议如何以更精细的方式进行区分。在同一篇论文中,Gray 和 Lamport 还介绍了一种协议,即 Paxos 和 2-PC 的组合,以获得更快的性能。

于 2018-05-27T16:01:51.343 回答