分布式事务的问题和解决方案

分布式事务的问题:
两阶段提交方案:XA方案 (需要数据库版本支持 性能不理想) 两阶段提交
TCC方案 (Try-Confirm-Cancel)
try 尝试执行业务 (完成所有业务检查 一致性 预留必须业务资源 准隔离性)
Confirm 确认执行 真正执行业务 不做任何业务检查 只使用try阶段预留资源业务 Confirm 操作满足幂等性
Cancel 取消执行业务 释放Try阶段预留的业务资源 Cancel操作满足幂等性
自我理解: try阶段 数据的校验 检查 预提交 confirm 如果都成功进行confirm Cancel 如果有一方的confirm有问题则转向cancel 相当于confirm的逆操作
原理: TCC框架都是通过注解的形式实现 通过AOP对带点注解的方法进行拦截 之后再根据结果分别执行Confirm或Cancel
本地消息表
可靠消息最终一致性方案 MQ
1、A系统向消息中间件发送一条预备消息
2、消息中间件保存预备消息并返回成功
3、A执行本地事务
4、A发送提交消息给消息中间件
步骤一出错 事务失败 不执行A
步骤二出错 事务失败 不执行A
步骤三出错 需要回滚预备消息 由消息中间件的回调接口,消息中间件会去不断的执行回调接口,检查事务是否执行成功
步骤四出错 A的本地事务是成功呢, 这时候消息中间件可以检查出A执行成功,不需要A发提交消息,消息中间件可以对自己消息进行提交,完成事务

  **最大努力通知方案**
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值