AT、TCC、Saga、XA模式分析
四种分布式事务模式,分别在不同的时间被提出,每种模式都有它的适用场景
- AT 模式是无侵入的分布式事务解决方案,适用于不希望对业务进行改造的场景,几乎0学习成本。
- TCC 模式是高性能分布式事务解决方案,适用于核心系统等对性能有很高要求的场景。
- Saga 模式是长事务解决方案,适用于业务流程长且需要保证事务最终一致性的业务系统,Saga 模式一阶段就会提交本地事务,无锁,长流程情况下可以保证性能,多用于渠道层、集成层业务系统。事务参与者可能是其它公司的服务或者是遗留系统的服务,无法进行改造和提供 TCC 要求的接口,也可以使用 Saga 模式。
- XA模式是分布式强一致性的解决方案,但性能低而使用较少。
分布式事务的泛化
提起分布式事务,最早指的涉及多个资源的数据库事务问题。
wiki对分布式事务的定义:A distributed transaction is a database transaction in which two or more network hosts are involved.
不过事务一词含义随着SOA架构逐渐扩大,根据上下文不同,可分为两类:
- System transaction
- Business transaction
前者多指数据库事务,后者则多对应一个业务交易。与此同时,分布式事务的含义也在泛化,尤其SOA、微服务概念流行起来后,多指的是一个业务场景,需要编排很多独立部署的服务时,如何保证交易整体的原子性与一致性问题,这类分布式事务也称作长事务(long-lived transaction),例如一个定行程的交易,它由购买航班、租车以及预订酒店构成,而航班预订可能需要一两天才能确认。为了统一对概念的理解,本文默认指的都是这类长事务。
分布式事务概念泛化的同时,也带来了一个技术问题,微服务下这类分布式事务的ACID该如何保证?是否仍然可以用传统两阶段提交/XA去解决?
参考:
由Seata看分布式事务取舍
https://www.jianshu.com/p/917cb4bdaa03
分布式事务,这一篇就够了
https://xiaomi-info.github.io/2020/01/02/distributed-transaction/
分布式事务:从刚性事务到柔性事务
https://www.jianshu.com/p/d70df89665b9
总结 AT、TCC、Saga、XA 模式分析
https://www.cnblogs.com/JaminXie/p/13885671.html
分布式事务的4种模式
https://zhuanlan.zhihu.com/p/78599954
一篇文章带你学习分布式事务
https://www.infoq.cn/article/g1avP9FUA6CDOYRAlv4R?utm_source=related_read_bottom&utm_medium=article