简介
SEATA开源的分布式事务解决方案,用于解决分布式系统中的数据一致性问题,由阿里巴巴开源。
分布式系统,数据存储在不同的资源管理器(数据库),需要保证分布式事务的原子性,业界比较常用xa,数据库标准实现,严格的一致性,但性能较差,不符合当前互联网系统高吞吐,高并发的要求。Seata提供最终一致性的分布式事务解决方案,牺牲严格一致性,获得高性能。Seata支持tcc,saga,at,其中at是seata内置方案,同时也支持xa
本文分析seata技术架构,核心组件
关键词
分布式事务
严格一致性/最终一致性
Transaction Coordinator 负责全局事务的生命周期管理和协调,保证所有分支事务的一致性。
Transaction Manager 负责分支事务的提交和回滚,接受TC的指令并执行相应的事务操作。
Resource Manager 负责本地事务的提交和回滚,与TM进行通信,执行相应的事务操作。
参考资料
seata官方网站 https://seata.apache.org/
技术架构
上图是seata的技术架构,分4个内容部分,事务框架流程,应用端组件(左侧),服务组件(右侧),功能组件
事务框架流程
技术架构图展示事务框架流程
1、开启全局事务,使用@GlobalTransactional方法调起执行切面,向TC注册全局事务,TC生成XID
2、分支事务注册,seata通过适配器向业务服务置入逻辑,业务服务调用前执行,注册分支事务,从TC获得分支事务ID,TC根据XID将分支事务与全局事务关联
3、分支事务报告,业务服务执行自身业务逻辑,例如执行sql,写入数据库,若成功,通知TC分支事务成功
步骤3,4通常多个业务服务
4、全局提交事务或回滚,分支服务全部成功,TM通知TC全局事务成功;否则,通知TC全局事务失败;
5、分支事务提交或回滚, TC收到全局事务的结果,若成功,则通知RM成功,RM收到通知后执行清理工作;如果失败了,则RM进行回滚。
总述,seata的框架流程是通用分布式事务流程,各模式逻辑”塞”进框架内
应用端组件
at/tcc/saga/xa seata支持4种事务模式,其中at是seata标准,其他是实现业界标准
spring/springboot 配置/自动配置,spring环境事务逻辑注入
jdbc代理实现 jdbc数据源的代理实现,注入自身事务逻辑
sql解释器 解释sql,at事务模式使用,构建前后的数据的查询和更新语句
saga设计器 设计事务流程,用于事务回滚和前向路径
适配器 通常实现为拦截器,无侵入置入组件事务逻辑
事务管理器(tm)/资源管理器(rm)
事务协调服务(tc-server)
TC服务独立部署,支持多个应用使用,顾名思义,协调事务执行
协调核心(coordinator-core)
存储 存储事务的状态和其他数据,是分布式事务关键组件
会话/全局锁 意思跟数据库特性一样,seata在框架层面提供会话,锁的特性
功能组件
discovery tc服务的注册发现组件,实现tc服务高可用组件
其他,配置中心,rpc,metircs
NEXT
系列后续文章详细分析:
- 事务框架流程 分析参与框架流程的组件,tm,rm,协调core
- 事务模式 分析tcc,at,saga,xa
- tc-server 分析存储/会话/锁
4 公共组件 大部分以往文章分析过类似,可以参考本人其他文章,本系列不分析