八 三阶段提交事务

为什么有三阶段提交事务

因为2阶段提交存在单点故障,同步阻塞,网络脑裂等问题,所以在两阶段的基础上做了改良,并提出了3
阶段提交的概念

2阶段提交和3阶段提交的区别

3阶段在2阶段的基础上做了2个改进点∶
1.增加了起时机制,同时为协授者和参与者都引入题时机制。
2.在2阶段的第1和第2中间插入Lee一个提交准备(PreCommitl)阶段。插入的这个阶段能保证最后提交之前,各个节点的状态都是一致的.
所谓的三个阶段分别是∶执行,询问,最后真正缓交。
第一阶段∶CanCommit
第二阶段∶PreCommit
第三阶段∶Do Commit

3阶段提交

在这里插入图片描述
1.询问CanCommit阶段
3pc的CanCommit阶段和2pc的准备阶段是一样的。协调者向参与参者发canCommit请求,参与者如果可以提交返ok,否则放回no
2.锁资源 prepared commit 阶段
在第1阶段,如果所有参与者都返回了ok,就进入了prepared Commit 阶段prepared commit阶段∶协调者向所有参与者发送prepared请求。然后等待所有参与者的返回。
如果所有参与者都返回ack,那就直接进入doCommit新介段,如果有一个参与者没有返同ack,那就发送rollback请求。
3.真正提交,doCommit阶段
协调者向所有参与者,发送docommit, 所有参与者都提交事务。

3阶段提交的宕机和网络脑裂问题

在这里插入图片描述
1.第一二阶段,如果出现了参与者或 协作者放障或网络骇裂问题。
解决方案∶和2pc的处理方法一样,所有参与者将rolback(因为还未进入第三阶段,所有参与者都不会接收到提交或回滚的命令,当前事务是无法继续提交的,故只能回滚。)
2.第三阶段,如果出现参与者域协调者故障或网络脑裂问题。
解决方案∶统一提交,因为前面第一二都OK了,所以系统有很大信心,成功提交的几率很大。
3阶段结论∶
三阶段提交其实没根本性解决问题,它仅仅是引入了perpared commit阶段,无法解决单点故障或网络脑裂问题,仅仅是多做了一次校验而已,治标不治本,无法彻底解决分布式一致性问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值