分布式理论基础:2PC、3PC、Paxos

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chao2016/article/details/85913504

2PC

二阶段提交(Tow-Phase Commit)

  • 阶段一:提交事务请求(投票阶段)
  • 阶段二:执行事务或中断事务(执行阶段)

优点

  • 原理简单,实现方便

缺点

  • 同步阻塞
  • 协调者单点问题
  • 数据不一致(由脑裂引起)
  • 过于保守

脑裂:即网络分区。指的是当网络发生异常情况,导致组成分布式系统的所有节点中,只有部分节点之间能够进行正常通信,而另一些节点则不能。

3PC

三阶段提交(Three-Phase Commit)

将2PC中的第一阶段一分为二。2PC中,“各参与者执行事务操作,并将Undo和Redo信息记入事务日志中”在阶段一中。3PC中,“各参与者执行事务操作,并将Undo和Redo信息记入事务日志中”是在阶段二中,即收到PreCommit进行的预提交事务的阶段。

  • 阶段一:CanCommit:投票阶段
  • 阶段二:PreCommit:预提交事务或中断事务
  • 阶段三:doCommit:提交事务或中断事务

优点

  • 降低了阻塞范围
  • 避免了协调者单点问题

缺点

  • PreCommit后的脑裂依然存在,数据不一致。

Paxos边角料

一个分布式算法有两个最重要的属性:

  • 安全性(Safety):指那些需要保证永远都不会发生的事情。
  • 活性(Liveness):指那些最终一定会发生的事情。

类似于两阶段提交的算法过程:

  • 阶段一:Prepare
  • 阶段二:Commit

其实还有一个学习阶段,也就是一个提案要经过3RTT。

为了解决活锁问题,引入主Proposer,即Master来解决。

小结

  • 二阶段提交协议解决了分布式事务的原子性问题,保证了分布式事务的多个参与者要么都执行成功,要么都执行失败。
  • 三阶段提交协议在二阶段的基础上,添加了PreCommit过程,避免了二阶段协议中的无限期等待问题。
  • Poxos算法引入了“过半”的理论,即少数服从多数的原则,克服了过于保守的问题;通过支持分布式节点角色之间的轮换来避免单点问题;因此,它也解决了无限期等待问题和脑裂问题。

猜你喜欢

转载自blog.csdn.net/chao2016/article/details/85913504