您的位置:首页 > 游戏 > 手游 > 查看企业信息的网站_商务网站建设_整站seo定制_东莞互联网推广

查看企业信息的网站_商务网站建设_整站seo定制_东莞互联网推广

2025/4/25 2:18:39 来源:https://blog.csdn.net/2301_79652490/article/details/147189684  浏览:    关键词:查看企业信息的网站_商务网站建设_整站seo定制_东莞互联网推广
查看企业信息的网站_商务网站建设_整站seo定制_东莞互联网推广

好的,分布式事务是分布式系统中的核心难点之一,XA、AT(Auto Transaction)和TCC(Try-Confirm-Cancel)是三种常见的解决方案。以下是它们的原理和流程对比:


一、 XA 事务(两阶段提交协议)

适用场景:传统数据库层的强一致性事务,依赖数据库原生支持(如MySQL XA协议)。

原理

两阶段提交(2PC)

  1. Prepare Phase(准备阶段)
    ◦ 事务管理器(TM)向所有参与者(资源管理器,RM)发送“预提交”请求。
    ◦ 参与者执行事务操作,记录undo/redo日志,锁定资源,返回“就绪”或“失败”。
  2. Commit Phase(提交阶段)
    ◦ 若所有参与者返回“就绪”,TM发送“提交”命令,参与者持久化数据并释放锁。
    ◦ 若任一参与者返回“失败”,TM发送“回滚”命令,参与者撤销操作。
流程示例
TM → RM1: Prepare
TM → RM2: Prepare
RM1 → TM: Ready
RM2 → TM: Ready
TM → RM1: Commit
TM → RM2: Commit
优缺点

优点:强一致性,数据库原生支持。
缺点
• 性能差(同步阻塞、锁竞争)。
• 单点故障(TM宕机可能导致资源长期锁定)。
• 不适用于高并发或长事务场景。


二、 AT 事务(自动补偿型)

适用场景:Seata框架提出的模式,适用于微服务架构,通过本地事务+全局锁实现弱侵入性。

原理

核心机制

  1. 全局锁:在业务表上记录全局锁,防止其他事务修改相同数据。
  2. 本地事务:每个分支事务提交时自动生成回滚日志(undo log)。
  3. 补偿机制:若事务失败,通过undo log回滚数据。
流程
  1. 阶段一(提交)
    • 业务SQL执行前,记录数据快照(undo log)。
    • 执行业务SQL,提交本地事务,释放本地锁(但保留全局锁)。
  2. 阶段二(提交/回滚)
    • 若全局事务成功,异步删除undo log。
    • 若全局事务失败,根据undo log生成反向SQL补偿数据。
优缺点

优点
• 无侵入性(仅需代理数据源)。
• 性能优于XA(无全局锁等待)。
缺点
• 全局锁可能引发脏写(需业务隔离级别支持)。
• 无法处理非SQL操作(如Redis、MQ)。


三、 TCC 事务(补偿型)

适用场景:需要业务高度可控的场景(如金融交易),通过业务代码实现补偿逻辑。

原理

三阶段模型

  1. Try 阶段:预留资源(如冻结账户余额),记录中间状态。
  2. Confirm 阶段:提交事务,确认资源操作(如扣减冻结金额)。
  3. Cancel 阶段:回滚事务,释放预留资源(如解冻金额)。
流程示例
订单服务 → Try: 创建订单(状态:待确认)
库存服务 → Try: 冻结库存(库存数-1,冻结数+1)-- 若所有Try成功 --
订单服务 → Confirm: 订单状态改为“已确认”
库存服务 → Confirm: 冻结库存数-1,实际库存数不变-- 若任一Try失败 --
订单服务 → Cancel: 删除订单
库存服务 → Cancel: 库存数+1,冻结数-1
关键要求

幂等性:Confirm/Cancel需支持重复调用。
防悬挂:需处理Try成功但未收到Confirm/Cancel的场景(如超时控制)。

优缺点

优点
• 灵活性高,可处理非SQL操作。
• 性能较好(无全局锁)。
缺点
• 业务侵入性强(需实现Try/Confirm/Cancel接口)。
• 开发复杂度高(需处理所有异常分支)。


四、 对比总结

方案一致性性能侵入性适用场景
XA强一致传统数据库事务
AT最终一致微服务+SQL场景
TCC最终一致金融等高可靠性业务

五、 选型建议

  1. XA:适合强一致性的简单事务(如跨库转账),但对性能要求不高。
  2. AT:适合微服务架构下的SQL操作(如电商下单),平衡性能与侵入性。
  3. TCC:适合复杂业务(如支付、库存扣减),需精细化控制补偿逻辑。

通过结合业务需求(一致性、性能、开发成本)选择合适方案,必要时可混合使用(如TCC+AT)。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com