如何实现最终一致性分布式事务

  1. 如何实现最终一致性分布式事务
    1. 二阶段提交
      1. 概念:参与者将操作成败通知协调者,再由协调者根据所有参与者的反馈情况决定各个参与者是否要提交操作或者终止操作
      2. 作用:主要保证了分布式事务的原子性,第一阶段为准备阶段,第二阶段为提交阶段
      3. 缺点:不仅要锁住参与者的所有资源,而且要锁住协调者资源,开销大,一句话总结就是2PC效率很低,对高并发很不友好
    2. 三阶段提交:
      1. 概念:三阶段提交协议在协调者和参与者中都引入了超时机制,并且把两阶段提交协议的第一阶段拆分成了两步:询问,然后再锁资源,最后真正提交,这样三阶段提交就有CanCommit,PreCommit,DoComiit三个阶段。
        1. 协调者询问各个参与者是否可以正常执行
        2. 参与者集群预估判断是否可以执行
        3. 正常执行,进入pre-commit,不满足或者等待超时,abort
        4. 协调者询问各个参与者是否可以正常执行
        5. 参与者集群执行事务但是不提交
        6. 协调者接受反馈,正常执行则commit,失败或者等待超时则rollback
        7. 协调者向所有参与者发起事务提交通知
        8. 参与者集群收到通知或超时提交
        9. 参与者集群反馈事务提交结果
        10. 参与者超时提交,出现不一致
      2. 缺点:如果进入pre-commit后,协调者发出的是abort请求,假设只有一个参与者收到并进行了abort操作,而其他对于系统状态未知的参与者选择继续提交commit,此时系统状态发生不一致
    3. 柔性事务
      1. 概念:所谓柔性事务是相对强制缩表的刚性事务而言,流程如下:
        1. 服务器A的事务如果执行顺利,那么事务A就先行提交,如果事务B也执行顺利,则事务B也提交,整个事务就算完成,
        2. 但是如果事务B执行失败,事务B本身回滚,这时事务A已经提交,所以需要执行一个补偿操作,将已经提交的事务A执行的操作进行反操作,恢复到未执行前事务A的状态
      2. 缺点:业务侵入性太强,还要补偿操作,缺乏普遍性,没法大规模推广
    4. 消息最终一致性解决方案之RabbitMQ实现:
      1. 实现:发送方确认+消息持久化+消费者确认
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值