我正在尝试理解paxos和两阶段提交之间的区别,以此作为在多台机器之间达成共识的手段。两阶段提交和三阶段提交非常容易理解。3PC似乎也解决了在2PC中阻塞的故障问题。所以我真的不明白Paxos在解决什么问题。有人能告诉我Paxos到底解决了什么问题吗?
发布于 2014-12-05 17:27:34
如果事务管理器失败,则2PC会阻塞,需要人工干预才能重新启动。3PC算法(有几种这样的算法)试图在原来的事务管理器失败时通过选举新的事务管理器来修复2PC。
只要大多数进程(管理器)是正确的,Paxos就不会阻塞。Paxos实际上解决了更普遍的共识问题,因此,它也可以用于实现事务提交。与2PC相比,它需要更多的消息,但它对管理器故障具有弹性。与大多数3PC算法相比,Paxos提供了一种更简单、更有效的算法(最小消息延迟),并且已被证明是正确的。
Gray和Lamport在一篇名为《Consensus on Transaction Commit》的优秀paper中比较了2PC和Paxos。
(在peter的回答中,我认为他将2PC与2PL (两相锁定)混合在一起。)
发布于 2018-05-28 00:01:51
2-PC是最传统的事务提交协议,是事务原子性的核心。但它本质上是阻塞的,即如果事务管理器/协调器在两者之间发生故障,它将导致协议阻塞,并且没有任何进程会意识到这一点。需要手动干预才能修复协调器。
虽然作为分布式共识协议的Paxos有多个这样的协调器,并且如果大多数协调器同意事务完成,那么它就成为一个成功的原子事务。
您应该阅读https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/tr-2003-96.pdf以更细粒度地理解这两个协议是如何区分的。在同一篇论文中,Gray和Lamport还引入了一种协议,即Paxos和2-PC的组合,以实现更快的性能。
https://stackoverflow.com/questions/27304887
复制相似问题