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中

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、概述 在微服务架构下,虽然我们会尽量避免分布式事务,但是只要业务复杂的情况下这是一个绕不开的问题,如何保证业务...
    皮多堡阅读 4,302评论 0 6
  • 微信公众号「后端进阶」,专注后端技术分享:Java、Golang、WEB框架、分布式中间件、服务治理等等。 在微服...
    后端进阶阅读 4,894评论 1 5
  • Seata框架是一个业务层的XA(两阶段提交)解决方案。在理解Seata分布式事务机制前,我们先回顾一下数据库层面...
    伊凡的一天阅读 103,628评论 18 92
  • 表情是什么,我认为表情就是表现出来的情绪。表情可以传达很多信息。高兴了当然就笑了,难过就哭了。两者是相互影响密不可...
    Persistenc_6aea阅读 127,263评论 2 7
  • 16宿命:用概率思维提高你的胜算 以前的我是风险厌恶者,不喜欢去冒险,但是人生放弃了冒险,也就放弃了无数的可能。 ...
    yichen大刀阅读 11,292评论 0 4