当前位置: 首页 > news >正文

Seata介绍

介绍:

Seata的设计目标是对这个业务无侵入,因此从业务无侵入的2PC方案开始的,在传统的2PC的基础上演进的。它把一个分布式事务拆分理解成一个包含了若干分支事务的全局事务。全局事务的职责是协调其下管辖的分支事务达成一致性,要么一起成功提交,要么一起失败回滚。此外,通常分支事务本身就是一个关系数据库的本地事务。

 Seata的三个重要组件:

        TC:Transaction Coordinator 事务协调器,管理全局的分支事务的状态,用于全局性事务的提交和回滚。

        TM:Transaction Manager 事务管理器,用于开启、提交或者回滚全局事务。

        RM:Resource Manager 资源管理器,用于分支事务上的资源管理,向TC注册分支事务,上报分支事务的状态,接受TC的命令来提交或者回滚分支事务。

 

Seata的执行流程如下:

       1.A服务的TM向TC申请开启一个全局事务,TC就会创建一个全局事务并返回一个唯一的XID

        2.A服务的RM向TC注册分支事务,并及其纳入XID对应全局事务的管辖

        3.A服务执行分支事务,向数据库进行操作

        4.A服务开启远程调用B服务,并将其纳入XID对应的全局事务的管辖

        5.B服务的RM向TC注册分支事务,并将其纳入XID对应的全局事务的管辖中

        6.B服务执行分支事务,向数据库进行操作

        7.全局事务调用链处理完毕,TM根据无异常向TC发起事务的提交或者回滚

        8.TC协调其管辖之下的所有分支事务,决定是否回滚

Seata实现2PC与传统2PC的差别:

        架构层次方面,传统2PC方案的 RM 实际上是在数据库层,RM本质上就是数据库自身,通过XA协议实现,而 Seata的RM是以jar包的形式作为中间件层部署在应用程序这一侧的。
        两阶段提交方面,传统2PC无论第二阶段的决议是commit还是rollback,事务性资源的锁都要保持到Phase2完成才释放。而Seata的做法是在Phase1 就将本地事务提交,这样就可以省去Phase2 持锁的时间,整体提高效率。

http://www.lryc.cn/news/65629.html

相关文章:

  • VK Cup 2017 - Round 1 A - Bear and Friendship Condition(并查集维护大小 + dfs 遍历图统计边数)
  • 为UOS启用VNC和Windows远程桌面
  • Java时间类(七)-- LocalDateTime()类
  • 卢北辰:数据点亮梦想,能力驱动人生 | 提升之路系列(九)
  • 数据库基础及用户管理授权
  • 比特米盒子刷安卓ATV6.0
  • 【用python的QT做信号处理的界面】
  • 【Linux】进程间通信 —— 管道
  • 知识管理在企业中的重要性
  • Socks5、网络安全、代理IP技术详解
  • C++学习day--09 字符串比较、运算符
  • 缓存和数据库一致性问题
  • 4月京东生鲜水果行业数据报告:榴莲销量增长400%,市场格局剧变
  • Windows无法完成格式化怎么办?正确的3个解决方法!
  • 基于aspnet个人博客网站dzkf6606程序
  • 不黑艺术学社京藏行——参观五台山孙溟㠭为五台山红英师治印
  • mysql数据之表管理-mysql高级管理
  • 公司新来的00后真是卷王,工作没2年,跳槽到我们公司起薪18K都快接近我了
  • 面试题30天打卡-day19
  • ASEMI代理ADI亚德诺LTC6992IS6-1#TRMPBF车规级芯片
  • Oracle PL/SQL基础语法学习15:静态表达式
  • B-Tree (多路查找树)分析-20230503
  • OpenGL光照教程之 透光物
  • 如何使用hook?
  • 双指针技巧秒杀七道链表题目
  • 在“裸奔”时代保护我们的隐私:网络攻击、数据泄露与隐私侵犯的应对策略与工具
  • 如何写出高质量代码
  • [oeasy]python0048_注释_comment_设置默认编码格式
  • C++中的queue与priority_queue
  • 电脑发挥极致,畅游永恒之塔sf