seata学习笔记(二)——原理分析

简介: seata学习笔记(二)——原理分析

什么是seata?


seata是具有高性能、易用的微服务框架下的分布式事务解决方案。


传统事务


传统单机应用程序中,三个模块共用一个本地数据库,事务的原子性可通过数据库本身的事务支持。


image.png


微服务框架事务问题?


微服务框架下,一个业务逻辑可能涉及多个业务模块,不同的模块有自己的数据库,单个业务模块的事务可通过数据库事务保证,但是作为一个整体又将如何保证事务的一致性呢?


image.png


seata如何解决分布式事务问题


seata就是为了解决上述分布是事务问题应运而生。


image.png


seata中的三种角色


事务协调器(TC):维护全局事务和分支事务的状态,驱动全局提交或回滚。(seata server)


事务管理器TM:定义全局事务的范围:开始全局事务,提交或回滚全局事务。实际开发中,TM大多是我们全局事务的入口,可能与RM集成为一体。


资源管理器(RM):管理分支事务,与TC进行对话以注册分支事务并报告分支事务的状态,并驱动分支事务的提交或回滚。


seata 事务生命周期管理


1、TM请求TC开启全局事务。TC生成代表全局事务XID。


2、XID通过微服务的调用链传播。


3、RM将本地事务向TC注册为XID全局事务的分支事务。


4、TM要求TC提交或回滚相应的XID全局事务。


5、TC驱动XID对应的全局事务下的所有分支事务,以完成分支的提交或回滚。


image.png

分布式事务提交流程


XID的传播


全局事务XID是通过微服务的调用链传播


1、fegin 调用端,从rootContext中获取xid,添加header请求头


2、feign 服务端,从header请求头中获取xid,绑定到rootContext中


相关文章
|
2月前
|
Java Nacos Sentinel
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(九)Nacos+Sentinel+Seata
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(九)Nacos+Sentinel+Seata
239 0
|
2月前
|
SQL SpringCloudAlibaba 中间件
SpringCloud Alibaba Seata处理分布式事务--学习笔记
SpringCloud Alibaba Seata处理分布式事务--学习笔记
27 0
|
存储 运维 监控
Seata-微服务架构开发的必备利器 | 学习笔记
快速学习 Seata-微服务架构开发的必备利器
256 0
Seata-微服务架构开发的必备利器 | 学习笔记
|
Java 中间件 FESCAR
Seata介绍|学习笔记
快速学习Seata介绍
244 0
Seata介绍|学习笔记
|
前端开发 Java 数据库
Seata案例-完成下单和扣除库存代码|学习笔记
快速学习Seata案例-完成下单和扣除库存代码
180 0
Seata案例-完成下单和扣除库存代码|学习笔记
|
安全 Java 数据库
Seata案例-异常模拟|学习笔记
快速学习Seata案例-异常模拟
53 0
Seata案例-异常模拟|学习笔记
|
NoSQL Java 关系型数据库
Seata案例-Seata使用|学习笔记
快速学习Seata案例-Seata使用
711 0
Seata案例-Seata使用|学习笔记
|
SQL Java 数据库
Seata运行流程分析|学习笔记
快速学习Seata运行流程分析
92 0
Seata运行流程分析|学习笔记
|
设计模式 Dubbo Java
3.8 Spring Cloud Alibaba Seata 分布式事务| 学习笔记
快速学习 3.8 Spring Cloud Alibaba Seata 分布式事务。
135 0
3.8 Spring Cloud Alibaba Seata 分布式事务| 学习笔记
|
存储 SpringCloudAlibaba 关系型数据库
SpringCloud Alibaba之Seata分布式事务学习笔记(二)
SpringCloud Alibaba之Seata分布式事务学习笔记(二)
SpringCloud Alibaba之Seata分布式事务学习笔记(二)

热门文章

最新文章