seata原理源码分析系列(一)架构, 组件

简介

    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

系列后续文章详细分析:

  1. 事务框架流程 分析参与框架流程的组件,tm,rm,协调core
  2. 事务模式 分析tcc,at,saga,xa
  3. tc-server 分析存储/会话/锁

     4   公共组件 大部分以往文章分析过类似,可以参考本人其他文章,本系列不分析

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

中间件XL

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值