速通springcloud--05Seata

Seata

Seata是Spring提供的分布式事务解决方案

官网:https://seata.apache.org/zh-cn/docs/user/quickstart

基本概念

  1. 事务模式
    Seata 支持以下事务模式:

AT 模式(Auto Transaction):自动补偿型事务模式,无侵入业务代码(最常使用)

TCC 模式(Try-Confirm-Cancel):需要业务实现 Try、Confirm、Cancel 三个接口

SAGA 模式:长事务解决方案

XA 模式:基于 XA 协议的强一致性分布式事务

  1. 核心组件
    TC (Transaction Coordinator) - 事务协调器:维护全局和分支事务的状态,驱动全局事务提交或回滚

TM (Transaction Manager) - 事务管理器:定义全局事务的范围,开始全局事务、提交或回滚全局事务

RM (Resource Manager) - 资源管理器:管理分支事务处理的资源,与TC交谈以注册分支事务和报告分支事务的状态,并驱动分支事务提交或回滚

AT模式

AT模式工作流程

第一阶段:执行阶段
  1. 解析SQL:Seata的JDBC数据源代理会拦截业务SQL,解析SQL语义,找到业务SQL要更新的业务数据
  2. 查询前镜像:根据解析得到的条件信息,生成查询语句,定位数据,保存这些数据(前镜像)
  3. 执行业务SQL:执行业务SQL,更新业务数据
  4. 查询后镜像:根据前镜像的主键,查询更新后的数据(后镜像)
  5. 插入回滚日志:把前后镜像数据和业务SQL相关的信息组成一条回滚日志记录,插入到UNDO_LOG表中
  6. 提交前向TC注册分支:向TC(事务协调器)注册分支事务,并申请相关数据的全局锁
  7. 本地事务提交:业务数据的更新和前面步骤生成的UNDO LOG一并提交
  8. 上报执行状态:将本地事务提交的结果上报给TC
第二阶段:提交/回滚阶段
  1. 成功提交时
    1. TC收到所有分支事务的成功响应,发起全局提交指令
    2. RM(资源管理器)收到TC的提交指令后,异步批量删除UNDO LOG记录
  2. 需要回滚时
    1. TC收到任一分支事务的失败响应或超时,发起全局回滚指令
    2. RM收到TC的回滚指令后:
      1. 通过XID和Branch ID找到对应的UNDO LOG记录
      2. 校验UNDO LOG中的after image数据与当前数据是否一致
        1. 如果不一致(说明数据被其他事务修改过),需要人工介入处理
        2. 如果一致,则根据UNDO LOG中的before image恢复数据
      3. 删除UNDO LOG记录

基本使用

可以直接参考官网文档,写的非常好

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值