Seata两阶段提交AT详解
Seata两阶段提交
和传统2PC的模型类似,Seata定义了3个组件来协调分布式事务的处理过程
- Transaction Coordinator(TC):事务协调器,它是独立的中间件,需要独立部署运行,它维护全局事务的运行状态,接收TM指令发起的提交与回滚,负责与RM通信协调各各分支事务的提交或回滚。
- Transaction Manager(TM):事务管理器,TM需要嵌入和应用程序中工作,它负责开启一个全局事务,并最终向TC发起全局提交或全局回滚的指令。
- Resource Manager(RM):控制分支事务,负责分支注册,状态汇报,并接收事务协调器TC的指令,驱动分支(本地)事务的提交和回滚。
两阶段提交协议的演变:
一阶段:业务数据和回滚日志记录在同一个本地事务中提交,释放本地锁和连接资源。
二阶段:
提交异步化,非常快速地完成。
回滚通过一阶段的回滚日志进行反向补偿
新用户注册送积分列举Seata的分布式事务过程:
具体的执行流程如下:
1.用户服务的TM向TC申请开启一个全局事务,全局事务创建成功生成一个全局唯一的XID。
2.用户服务的RM向TC注册 分支事务,该分支事务在用户服务执行新增用户逻辑,并将其纳入XID对应全局事务的管辖。
3.用户服务执行分支事务,向用户表插入一条记录。
4.逻辑执行到远程调用积分服务时(XID在微服务调用链路的上下文中传播)。积分服务的RM向TC注册分支事务,该分支事务执行增加积分的逻辑,并将其纳入XID对应全局事务的管辖。
5.积分服务执行分支事务,向积分记录表插入一条记录,执行完毕后,返回用户服务。
6.用户服务分支事务执行完毕。
7.TM向TC发起针对XID的全局提交或回滚决议。
8.TC调度XID下管辖的全部分支事务完成提交或回滚事务请求。
Seata实现2PC与传统2PC的差别
- 架构层次方面,传统2PC方案的RM实际上是在数据库层,RM本质上就是数据库自身,通过XA协议实现,而Seata的RM是以jar包的形式作为中间件层部署在应用程序这一侧的。
- 两阶段提交方面,传统2PC无论第二阶段的决议是commit还是rollback,事务性资源的锁都要保持到Phase2完成才释放。而Seata的做法是在Phase1就将本地事务提交,这样可以省去Phase2持锁的时间,整体提高效率。
Seata两阶段提交AT详解相关推荐
- mongodb mysql 事务_MongoDB数据库两阶段提交实现事务的方法详解 _ 蚂蚁视界
本文实例讲述了MongoDB数据库两阶段提交实现事务的办法.分享给年夜家供年夜家参考,详细如下: MongoDB数据库中操作单个文档老是原子性的,然而,涉及多个文档的操作,通常被作为一个"事 ...
- 分布式事务实战---XA两阶段提交(2PC)方案详解
XA,2PC,two-phase commit protocol,两阶段事务提交采⽤的是 X/OPEN 组织定义的DTP 模型所抽象的: AP 应用程序,Application Program,定义事 ...
- 分布式事务Seata的AT模式下两阶段提交原理
文章目录 第一阶段 1. 扫描@GlobalTransactional注解,获取全局事务XID 2. TC生成全局事务XID,记录入库 3. 执行业务逻辑,提交本地事务,记录branch_table. ...
- MySQL 为什么需要两阶段提交?
文章目录 1. 什么是两阶段提交 1.1 binlog 与 redolog binlog redo log 1.2 两阶段提交 2. 为什么需要两阶段提交 3. 小结 为什么要两阶段提交?一阶段提交不 ...
- 分布式事务解决方案之2PC(两阶段提交)入门简介
什么是2PC? 2PC即两阶段提交协议,是将整个事务流程分为两个阶段,准备阶段(Prepare phase).提交阶段(commit phase),2是指两个阶段,P是指准备阶段,C是指提 ...
- 分布式事务专题(三):分布式事务解决方案之2PC(两阶段提交)
目录: 基础概念 分布式事务理论 分布式事务解决方案之2pc(本章) 分布式事务解决方案之TCC 分布式事务解决方案之可靠消息最终一致性 分布式事务解决方案之最大努力通知 分布式事务综合案例分析 3. ...
- 约瑟夫环问题的两种解法(详解)
约瑟夫环问题的两种解法(详解) 题目: Josephus有过的故事:39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓.于是决定了自杀方式,41个人排成一个圆 ...
- 星巴克不使用两阶段提交
点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 来源:r6d.cn/6dyh 译者序 本文翻译自 2004 ...
- 两阶段提交实际项目V1
项目介绍 两阶段提交项目主要是实际用代码演示复现一下,两阶段提交的执行过程,仅供学习参考.本次主要分析的版本为V1版本,主要实现的流程包括服务端的基础架构编写,客户端的基础架构编写,完成事务提交的过程 ...
最新文章
- 微软牛津计划-语音转文本-文本转语音代码和实现
- 国内首篇云厂商 Serverless 论文入选全球顶会:突发流量下,如何加速容器启动?
- 打开老工程的办法(日常操作以这个为准)
- npm升级依赖包_Taro跨端开发之依赖管理
- 【Poj1017】Packets
- 知识蒸馏 | 综述: 网络结构搜索应用
- 在浏览器的地址栏输入网址的背后
- C# 在PowerPoint中给图片添加超链接和获取图片的超链接
- k近邻(kNN)算法的Python实现(基于欧氏距离)
- 深度linux deepin15.2,从其它Deepin版本升级到深度Deepin 15.11操作系统的方法
- 【无极低码】手写一个低代码平台之二次开发Java
- Excel VBA入门(6) - Worksheet对象常用方法事件
- Solr Facet 统计查询
- java英文日期格式化_java如何把英文的日期格式改成数字化的
- Elasticsearch7.8
- 从12个球任取8个球
- 魔兽世界最新服务器推荐,[大陆]《魔兽世界》全新第六大区推荐服务器
- 外部css样式不生效的原因
- 以太坊EVM兼容区块链全表
- 西门子S7-1200带触摸屏无塔恒压供水控制系统设计西门子S7-1200 PLC 程序,博图V13带触摸屏画面电气图纸