中间件-seata

分布式事务seata

角色组成

  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参数(增加日志表记录全局事务状态)可以解决。

相关推荐
染指111017 小时前
134.Agent-多Agent框架-LangChain多智能体
人工智能·中间件·langchain·agents
code_slave(码畜)1 天前
微服务架构落地:公共中间件层总览——不承载业务,只承载稳定性
spring boot·spring cloud·微服务·中间件·架构
今年下半年3 天前
【Spring Boot】多种存储文件(FastDFS / MinIO / 阿里云 OSS)接入设计说明(附源码)
spring boot·分布式·中间件·简单工厂模式·策略模式
青山木3 天前
秒杀系统设计(二):数据正确性——防超卖、分布式锁与一人一单
分布式·后端·mysql·中间件·架构
Maiko Star3 天前
* LangChain 自定义中间件详解:Hook、装饰器、类与执行顺序
中间件·langchain
katasea4 天前
第05章:信创技术栈选型:服务器、操作系统、数据库、中间件适配对比
服务器·数据库·中间件
yexianglunbai5 天前
中间件(Middleware)详解:概念、作用与实战
java·开发语言·中间件
染指11106 天前
128.Agent-LangChain核心组件-中间件-调用模型的时候
人工智能·windows·中间件·langchain·agent
染指11106 天前
129.Agent-LangChain核心组件-自定义中间件-通过类实现(AgentMiddleware)
人工智能·中间件·langchain·agent·agents
程序猿乐锅7 天前
【黑马点评 | 第九篇】秒杀优化-异步实现
java·spring boot·redis·后端·spring·中间件·mybatis