跳至主要內容
分布式事务实战:Saga、TCC、AT 模式对比与选型

前言

单体应用时代,@Transactional 一行注解就能搞定事务。但拆成微服务后,一个业务可能横跨多个数据库、多个服务,分布式事务就成了绕不过去的坎。

网上讲分布式事务的文章铺天盖地,但大多数只讲理论。本文将结合担保业务系统的实际场景,深度对比 Saga、TCC、AT 三种主流分布式事务模式,给出选型决策树和落地方案。


一、为什么分布式事务这么难?

1.1 单机事务的局限性

在单体应用中,事务管理依赖数据库的 ACID 特性:

@Service
public class CreditService {
    @Autowired
    private CustomerMapper customerMapper;
    @Autowired
    private ContractMapper contractMapper;

    @Transactional
    public void applyCredit(CreditApplyRequest request) {
        customerMapper.insert(request.getCustomer());
        contractMapper.insert(request.getContract());
        // 要么都成功,要么都失败
    }
}

郑天祺大约 10 分钟分布式分布式事务SagaTCCAT模式Seata