揭秘蚂蚁金服分布式事务 Seata 的AT、Saga和TCC模式
导语
本文根据 8月11日 SOFA Meetup#3 广州站 《分布式事务 Seata 及其三种模式详解》主题分享整理,着重分享分布式事务产生的背景、理论基础,以及 Seata 分布式事务的原理以及三种模式(AT、TCC、Saga)的分布式事务实现。现场回顾视频以及 PPT 见文末链接。
1.1 分布式架构演进之 - 数据库的水平拆分
1.2 分布式架构演进之 - 业务服务化拆分
| 分布式事务理论基础
2.1 两阶段提交协议
2.2 TCC
2.3 Saga
| Seata 及其三种模式详解
3.1 分布式事务 Seata 介绍
3.2 分布式事务 Seata 产品模块
-
TM 开启分布式事务(TM 向 TC 注册全局事务记录); -
按业务场景,编排数据库、服务等事务内资源(RM 向 TC 汇报资源准备状态 ); -
TM 结束分布式事务,事务一阶段结束(TM 通知 TC 提交/回滚分布式事务); -
TC 汇总事务信息,决定分布式事务是提交还是回滚; -
TC 通知所有 RM 提交/回滚 资源,事务二阶段结束;
3.3 分布式事务 Seata 解决方案
3.3.1 AT 模式
AT 模式如何做到对业务的无侵入 :
-
一阶段:
-
二阶段提交:
-
二阶段回滚:
3.3.2 TCC 模式
-
Try:资源的检测和预留; -
Confirm:执行的业务操作提交;要求 Try 成功 Confirm 一定要能成功; -
Cancel:预留资源释放;
3.3.3 Saga 模式
-
一阶段提交本地数据库事务,无锁,高性能; -
参与者可以采用事务驱动异步执行,高吞吐; -
补偿服务即正向服务的“反向”,易于理解,易于实现;
| 总结
往期推荐:
技术琐话
以分布式设计、架构、体系思想为基础,兼论研发相关的点点滴滴,不限于代码、质量体系和研发管理。本号由坐馆老司机技术团队维护。