常见方案

方案名称核心原理特点适用场景
2PC(两阶段提交)分为准备阶段(预提交)和提交阶段,由协调者统一管理参与者事务状态强一致性,同步阻塞严重,单点故障风险高对一致性要求高且并发量低的场景(如银行转账)
3PC(三阶段提交)在2PC基础上增加CanCommit阶段,引入超时机制和预提交状态减少阻塞时间,解决部分2PC的脑裂问题,但复杂度更高需要优化2PC阻塞问题的场景
XA协议基于数据库的分布式事务协议,由TM(事务管理器)协调RM(资源管理器)依赖数据库支持,性能较差,MySQL实现不完善单服务多库的强一致性需求(如传统金融系统)
TCC(补偿事务)通过Try-Confirm-Cancel三阶段实现柔性事务,需自定义补偿逻辑高性能,需业务代码侵入,适合高并发场景电商订单、库存扣减等高频业务
Saga长事务拆分为多个子事务,通过正向操作和逆向补偿实现最终一致性无锁设计,适合长流程,但需保证补偿幂等性旅行预订、跨服务业务流程(如机票+酒店)
本地事务表本地事务与消息表结合,通过定时任务或轮询保证消息投递实现简单,依赖本地事务,消息处理有延迟对一致性要求不高的异步通知(如积分发放)
最大努力通知按规律多次通知第三方系统,提供查询接口核对结果不保证成功,需人工对账,适合与外部系统交互支付结果通知、银行回调等
可靠消息最终一致性通过MQ+事务消息确保消息可靠投递,消费者保证幂等处理异步解耦,需消息中间件支持(如RocketMQ)订单状态同步、跨服务数据一致性
MQ事务消息消息生产与本地事务绑定,通过事务消息实现跨服务一致性依赖MQ事务能力(如RocketMQ),半消息机制分布式事务与消息队列结合的场景(如订单创建+库存扣减)

说明

  1. 刚性事务(2PC/3PC/XA)‌:遵循ACID,适合强一致性场景,但性能较低。
  2. 柔性事务(TCC/Saga等)‌:遵循BASE理论,最终一致性,适合高并发场景。
  3. Seata框架‌:整合AT/TCC/SAGA模式,提供统一解决方案。

常见框架

框架名称支持模式技术栈兼容性核心特点成熟度/社区热度
SeataAT、TCC、SAGA、XAJava生态(SpringCloud/Dubbo等)无侵入式AT模式、全局锁防脏写、高可用架构,支持多种数据库高(阿里背书,社区活跃)
ServiceCombPackSAGA、TCCJava(ServiceComb微服务框架)华为开源,Saga模式通过注解定义事务与补偿方法,TCC需显式实现Try/Confirm/Cancel中(企业应用较多)
HmilyTCCJava(SpringBoot)轻量级、高性能,依赖业务代码实现Try/Confirm/Cancel接口中(文档完善)
ByteTCCTCCJava支持事务悬挂/空回滚处理,提供完整TCC实现机制中(社区维护稳定)
NarayanaXA、SAGAJava(JTA标准实现)符合JTA规范,支持XA协议,适合传统JavaEE应用中(社区维护稳定)
TX-LCNLCN(LCN改进版)Java基于LCN的增强实现,支持柔性事务管理中(文档较少)

说明

模式差异

  • AT模式(Seata)通过SQL解析实现无侵入,但需数据库支持ACID;
  • TCC模式(Hmily/ByteTCC)需业务代码实现补偿逻辑,性能更高但侵入性强;
  • SAGA模式(ServiceComb Pack)适合跨多服务的异步流程,但需处理事务悬挂问题。

技术栈建议

  • 微服务场景优先选择Seata(与Spring Cloud生态集成紧密);
  • 对性能要求高且可接受代码侵入时,可选Hmily或ByteTCC。

社区热度

Seata在GitHub的Star数及更新频率显著高于其他框架,企业落地案例丰富。

Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐