Seata两阶段提交

和传统2PC的模型类似,Seata定义了3个组件来协调分布式事务的处理过程

  1. Transaction Coordinator(TC):事务协调器,它是独立的中间件,需要独立部署运行,它维护全局事务的运行状态,接收TM指令发起的提交与回滚,负责与RM通信协调各各分支事务的提交或回滚。
  2. Transaction Manager(TM):事务管理器,TM需要嵌入和应用程序中工作,它负责开启一个全局事务,并最终向TC发起全局提交或全局回滚的指令。
  3. 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的差别

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

Seata两阶段提交AT详解相关推荐

  1. mongodb mysql 事务_MongoDB数据库两阶段提交实现事务的方法详解 _ 蚂蚁视界

    本文实例讲述了MongoDB数据库两阶段提交实现事务的办法.分享给年夜家供年夜家参考,详细如下: MongoDB数据库中操作单个文档老是原子性的,然而,涉及多个文档的操作,通常被作为一个"事 ...

  2. 分布式事务实战---XA两阶段提交(2PC)方案详解

    XA,2PC,two-phase commit protocol,两阶段事务提交采⽤的是 X/OPEN 组织定义的DTP 模型所抽象的: AP 应用程序,Application Program,定义事 ...

  3. 分布式事务Seata的AT模式下两阶段提交原理

    文章目录 第一阶段 1. 扫描@GlobalTransactional注解,获取全局事务XID 2. TC生成全局事务XID,记录入库 3. 执行业务逻辑,提交本地事务,记录branch_table. ...

  4. MySQL 为什么需要两阶段提交?

    文章目录 1. 什么是两阶段提交 1.1 binlog 与 redolog binlog redo log 1.2 两阶段提交 2. 为什么需要两阶段提交 3. 小结 为什么要两阶段提交?一阶段提交不 ...

  5. 分布式事务解决方案之2PC(两阶段提交)入门简介

    什么是2PC?       2PC即两阶段提交协议,是将整个事务流程分为两个阶段,准备阶段(Prepare phase).提交阶段(commit phase),2是指两个阶段,P是指准备阶段,C是指提 ...

  6. 分布式事务专题(三):分布式事务解决方案之2PC(两阶段提交)

    目录: 基础概念 分布式事务理论 分布式事务解决方案之2pc(本章) 分布式事务解决方案之TCC 分布式事务解决方案之可靠消息最终一致性 分布式事务解决方案之最大努力通知 分布式事务综合案例分析 3. ...

  7. 约瑟夫环问题的两种解法(详解)

    约瑟夫环问题的两种解法(详解) 题目: Josephus有过的故事:39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓.于是决定了自杀方式,41个人排成一个圆 ...

  8. 星巴克不使用两阶段提交

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 来源:r6d.cn/6dyh 译者序 本文翻译自 2004 ...

  9. 两阶段提交实际项目V1

    项目介绍 两阶段提交项目主要是实际用代码演示复现一下,两阶段提交的执行过程,仅供学习参考.本次主要分析的版本为V1版本,主要实现的流程包括服务端的基础架构编写,客户端的基础架构编写,完成事务提交的过程 ...

最新文章

  1. 微软牛津计划-语音转文本-文本转语音代码和实现
  2. 国内首篇云厂商 Serverless 论文入选全球顶会:突发流量下,如何加速容器启动?
  3. 打开老工程的办法(日常操作以这个为准)
  4. npm升级依赖包_Taro跨端开发之依赖管理
  5. 【Poj1017】Packets
  6. 知识蒸馏 | 综述: 网络结构搜索应用
  7. 在浏览器的地址栏输入网址的背后
  8. C# 在PowerPoint中给图片添加超链接和获取图片的超链接
  9. k近邻(kNN)算法的Python实现(基于欧氏距离)
  10. 深度linux deepin15.2,从其它Deepin版本升级到深度Deepin 15.11操作系统的方法
  11. 【无极低码】手写一个低代码平台之二次开发Java
  12. Excel VBA入门(6) - Worksheet对象常用方法事件
  13. Solr Facet 统计查询
  14. java英文日期格式化_java如何把英文的日期格式改成数字化的
  15. Elasticsearch7.8
  16. 从12个球任取8个球
  17. 魔兽世界最新服务器推荐,[大陆]《魔兽世界》全新第六大区推荐服务器
  18. 外部css样式不生效的原因
  19. 以太坊EVM兼容区块链全表
  20. 西门子S7-1200带触摸屏无塔恒压供水控制系统设计西门子S7-1200 PLC 程序,博图V13带触摸屏画面电气图纸

热门文章

  1. 国产前端框架LayUI使用教程
  2. linux oracle ora-00257,ORA-00257归档日志已满解决
  3. tcl卸载会怎么样 tvac_tcl电视用adb命令免root卸载系统自带第三方软件
  4. js确认框confirm()用法实例详解
  5. 验证码是自动化的天敌?看看是怎么解决的
  6. HDU 2033 : 人见人爱A+B (C语言)
  7. 艺术字(CoreIDRAW)
  8. 阿里开源(EasyExcel)---导出EXCEL
  9. MySQL数据库(最全)
  10. 小红书达人等级划分?小红书垂类达人怎么看