Paxos vs两阶段提交

时间:2014-12-04 21:56:39

标签: database distributed-computing paxos

我试图理解paxos和两阶段提交之间的区别,作为在多台机器之间达成共识的手段。两阶段提交和三阶段提交很容易理解。似乎3PC解决了在2PC中会阻塞的故障问题。所以我不太了解Paxos正在解决的问题。有人可以说明Paxos究竟解决了什么问题吗?

2 个答案:

答案 0 :(得分:29)

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

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

Gray和Lamport比较了2PC和Paxos的优秀paper标题"交易提交共识"。

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

答案 1 :(得分:0)

2-PC 是最传统的事务提交协议,它支持事务的原子性核心。但它本质上是阻塞的,即如果事务管理器/协调器之间失败,它将导致协议被阻塞,并且没有进程会意识到它。它需要人工干预才能修复协调员。

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

你应该阅读https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/tr-2003-96.pdf 了解如何以更精细的方式区分这两个协议。在同一篇论文中,Lesley和Lamport还引入了一个协议,即Paxos和2-PC的组合,以提高性能。