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中


相关文章
原理篇:Seata TCC模式是如何解决幂等性、资源悬挂、空回滚问题的
原理篇:Seata TCC模式是如何解决幂等性、资源悬挂、空回滚问题的
1159 0
|
2月前
|
SQL JavaScript 数据库连接
Seata的工作原理
【10月更文挑战第30天】
28 3
|
7月前
|
SpringCloudAlibaba Java 数据库
SpringCloud Alibaba微服务 -- Seata的原理和使用
SpringCloud Alibaba微服务 -- Seata的原理和使用
|
7月前
|
Java Nacos Sentinel
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(九)Nacos+Sentinel+Seata
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(九)Nacos+Sentinel+Seata
852 0
|
7月前
|
SQL SpringCloudAlibaba 中间件
SpringCloud Alibaba Seata处理分布式事务--学习笔记
SpringCloud Alibaba Seata处理分布式事务--学习笔记
78 0
|
SQL 存储 NoSQL
分布式事务Seata原理
分布式事务Seata原理
30311 0
|
存储 SpringCloudAlibaba Java
SpringCloud Alibaba学习(十二):Seata处理分布式事务(三万字提供 介绍、搭建、实战、原理一条龙服务)(上)
SpringCloud Alibaba学习(十二):Seata处理分布式事务(三万字提供 介绍、搭建、实战、原理一条龙服务)
183 0
SpringCloud Alibaba学习(十二):Seata处理分布式事务(三万字提供 介绍、搭建、实战、原理一条龙服务)(上)
|
消息中间件 SQL 存储
对比7种分布式事务方案,还是偏爱阿里开源的Seata,真香!(原理+实战)
对比7种分布式事务方案,还是偏爱阿里开源的Seata,真香!(原理+实战)
|
Java 中间件 Unix
【分布式技术专题】「架构实践于案例分析」总结和盘点目前常用分布式事务特别及问题分析(Seata-终)
【分布式技术专题】「架构实践于案例分析」总结和盘点目前常用分布式事务特别及问题分析(Seata-终)
158 0
【分布式技术专题】「架构实践于案例分析」总结和盘点目前常用分布式事务特别及问题分析(Seata-终)
|
SQL 存储 Java
猿创征文|手把手教你微服务分布式事务与Seata框架源码分析(二)
猿创征文|手把手教你微服务分布式事务与Seata框架源码分析
213 0
 猿创征文|手把手教你微服务分布式事务与Seata框架源码分析(二)