七 两阶段事务的问题

两阶段事务-协调者宕机分析

在这里插入图片描述

1.如果在第一阶段,协调者宕机,那么所有参与者将无法再收到协调者第二阶段的commit或rollback命令,故会一直阻塞下去,本地事务无法结束
解决方案∶所有参与者统一rollback(因为还未进入第二阶段,所有参与者都不会接收到提交或回滚的命令,当前事务是无法继续提交的,故只能回滚。)

2.如果在第二阶段,协调者宕机,那么可能部分参与者没有接收到Commit、rollback,那么这部分没有接收到命令的参与者都会一直阻塞下去。

两阶段事务-参与者宕机分析

在这里插入图片描述

1.如果在第一阶段,某个参与者宕机,那么会导致协调者一直等待这个参与者的响应,从而导致其它参与者也进入阻塞,全局事务将无法结束。
解决方案∶所有参与者统一rolback(因为还未进入第二阶段,所有参与者都不会接收到提交或回滚的命令,当前事务是无法继续提交的,故只能回滚。)
2.如果在第二阶段,协调者发起Commit时,某个参与者宕机,已经执行Commit的参与者数据库已经修改成功,但是宕机的参与者就无法Commit,这个时候就会参数数据不一致的问题。

两阶段事务-网络问题(脑裂)

1.网络闪断,发生在第一阶段∶会有部分参与者进入阻塞,全局事务无法结束。
解决方案∶所有参与者统一rolback(因为还未进入第二阶段,所有参与者都不会接收到提交或回滚的命令,当前事务是无法继续提交的,故只能回滚。)
2.网络闪断,发生在第二阶段∶会有部分参与者Commit另一部分参与者未Commit,从而导致数据

思考题∶

当在第二阶段,出现了协调者 或参与者宕机,或网络脑裂;就会出现某个参与者不知道其他参与者究竟是Commit、rollback;
如果参与者采用超时机制,那么超时后重试,是该提交还是回滚?如果是执行回滚,那太保守,如果执行提交,那太激进暴力。如果是你,你会怎么做?

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值