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

什么是seata?

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

传统事务

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


微服务框架事务问题?

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


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

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


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对应的全局事务下的所有分支事务,以完成分支的提交或回滚。


分布式事务提交流程

XID的传播

全局事务XID是通过微服务的调用链传播
1、fegin 调用端,从rootContext中获取xid,添加header请求头
2、feign 服务端,从header请求头中获取xid,绑定到rootContext中

你可能感兴趣的:(seata学习笔记(二)——原理分析)