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

中间件-seata

分布式事务seata

  • 角色组成
  • 角色指责
  • AT模式
  • TCC模式

角色组成

在这里插入图片描述

  1. TC:事务协调者,维护全局和分支事务的状态,驱动全局事务提交或回滚。
  2. TM:事务管理者,定义全局事务的范围:开始全局事务、提交或回滚全局事务。
  3. RM:资源管理器,管理分支事务处理的资源,与TC交谈以注册分支事务和报告分支事务的状态,并驱动分支事务提交或回滚。
    TC为单独部署的Server服务端,TM和RM为嵌入到应用中的Client客户端。

角色指责

  1. TM请求TC开启一个全局事务。TC会生成一个XID作为该全局事务的编号。XID会在微服务的调用链路中传播,保证将多个微服务的子事务关联在一起。
  2. RM请求TC将本地事务注册为全局事务的分支事务,通过全局事务的XID进行关联。
  3. TM通知TC告诉XID对应的全局事务是进行提交还是回滚。
  4. TC驱动RM们将XID对应的自己的本地事务进行提交还是回滚。

AT模式

两阶段提交:
一阶段:生成undolog(前置镜像、后置镜像),拿到本地锁,做业务数据修改,拿到全局锁,提交本地事务。如果未拿到全局锁,超时失败将回滚本地事务,释放本地锁。
二阶段:
成功:(异步操作)删除undolog,释放全局锁。
失败:查找undolog,驱动RM回滚本地事务,释放全局锁。

TCC模式

在这里插入图片描述
TCC模式与AT模式比更灵活,不需要依赖数据库。但是需要手动实现try、commit、cancel3个方法。TCC框架还存在3个问题:空回滚、幂等、悬挂。使用useTCCFence参数(增加日志表记录全局事务状态)可以解决。

http://www.xdnf.cn/news/7652.html

相关文章:

  • 在innovus中如何设置让信号线打上双孔
  • DEBUG:Lombok 失效
  • Java转Go日记(四十三):Gorm事务
  • Maven 项目打包时添加本地 Jar 包
  • DAY28 超大力王爱学Python
  • CYT4BB Dual Bank 1 - 存储机制
  • t检验详解:原理、类型与应用指南
  • 什么是物联网 (IoT):2024 年物联网概述
  • 使用Mathematica绘制一类矩阵的特征值图像
  • Spring AI 介绍
  • BYUCTF 2025
  • JS 中 var、let、const 的区别联系
  • Unity入门学习(四)3D数学(4)之四元数Quaternion
  • Qt动态生成 UI
  • 动易私有知识库解决方案技术解析
  • 如何在WordPress网站上添加即时聊天功能
  • 游戏开发实战(三):Python复刻「崩坏星穹铁道」嗷呜嗷呜事务所---源码级解析该小游戏背后的算法与设计模式【纯原创】
  • 25.5.20学习总结
  • 算法与数据结构:质数、互质判定和裴蜀定理
  • Android 蓝牙开发 - 蓝牙相关权限(蓝牙基本权限、Android 12 蓝牙新增权限、位置权限)
  • matlab+opencv车道线识别
  • 目标检测DN-DETR(2022)详细解读
  • mysql的乐观锁与悲观锁
  • USB转TTL
  • 邂逅Node.js
  • 深度解析:AI知识库与LLM开发工具全景对比
  • Python基础学习-Day30
  • 基于R语言的贝叶斯网络建模:生态与环境因果推断实践
  • Mac如何允许安装任何来源软件?
  • srs-7.0 支持obs推webrtc流