Seata 简介
一. 简介
Seata是⼀款开源的分布式事务框架。致⼒于在微服务架构下提供⾼性能和简单易⽤的分布式事务服务。在Seata开源之前,Seata对应的内部版本在阿⾥经济体内部⼀直扮演着分布式⼀致性中间件的⻆⾊,帮助经济体平稳的度过历年的双11,对各业务单元业务进⾏了有⼒的⽀撑。经过多年沉淀与积累,商业化产品先后在阿⾥云、⾦融云进⾏售卖。2019.1为了打造更加完善的技术⽣态和普惠技术成果,Seata正式宣布对外开源,未来Seata将以社区共建的形式帮助其技术更加可靠与完备。
Seata:https://seata.io/zh-cn/index.html
二. 特色功能
-
微服务框架支持
⽬前已⽀持Dubbo、SpringCloud、Sofa-RPC、Motan和grpc等RPC框架,其他框架持续集成中
-
AT模式
提供⽆侵⼊⾃动补偿的事务模式,⽬前已⽀持MySQL、Oracle、PostgreSQL和TiDB的AT模式,H2开发中
-
TCC模式
⽀持TCC模式并可与AT混⽤,灵活度更⾼
-
SAGA模式
为⻓事务提供有效的解决⽅案
-
XA模式
⽀持已实现XA接⼝的数据库的XA模式
-
高可用
⽀持基于数据库存储的集群模式,⽔平扩展能⼒强
三. 产品模块
Seata中有三⼤模块,分别是TM、RM和TC。其中TM和RM是作为Seata的客户端与业务系统集成在⼀起,TC作为Seata的服务端独⽴部署。
-
TC(TransactionCoordinator)-事务协调者
维护全局和分⽀事务的状态,驱动全局事务提交或回滚
-
TM(TransactionManager)-事务管理器
定义全局事务的范围:开始全局事务、提交或回滚全局事务
-
RM(ResourceManager)-资源管理器
管理分⽀事务处理的资源,与TC交谈以注册分⽀事务和报告分⽀事务的状态,并驱动分⽀事务提交或回滚。
在Seata中,分布式事务的执⾏流程:
- TM开启分布式事务,TM会向TC注册全局事务记录;
- 操作具体业务模块的数据库操作之前,RM会向TC注册分⽀事务;
- 当业务操作完事后.TM会通知TC提交/回滚分布式事务;
- TC汇总事务信息,决定分布式事务是提交还是回滚;
- TC通知所有RM提交/回滚资源,事务⼆阶段结束。