seata的一些理解

有三个组成部分:

1,TC:事务协调器,是个独立的中间件,需要部署运行,维护着全局事务的运行状态,接收TM发起的全局事务的提交和回滚,负责和RM通信协调各个分支事务的提交和回滚

2,TM:事务管理器,负责开启一个全局事务

3,RM:控制分支事务,负责分支注册,并接收事务协调器TC的指令,

拿新用户注册送积分来举例,有两个微服务,一个用户服务,一个积分服务

具体的执行流程如下:

1,用户服务的TM像TC申请开启一个全局事务,全局事务创建成功并生成一个全局唯一的XID,

2,用户服务RM向TC注册分支事务,并返回一个branchId,该分支事务在用户服务执行新增用户逻辑,并将其纳入XID对应的全局事务的管辖

3,用户服务执行分支事务,在该事务里,执行完新增用户的逻辑后,在该数据库的undo_log表插入记录,事务提交,释放锁

4,远程调用积分服务,(XID在微服务调用链路的上下文中传播),积分服务的RM向TC注册分支事务,该分支事务执行增加积分的逻辑,在该事务里执行向积分数据库的undo_log表插入记录,并将其纳入XID全局事务的管辖

5,积分服务执行完毕后,返回用户服务

6,TM向TC发起针对XID的全局事务的提交或回滚

7,TC调度XID下管辖的全部分支事务完成提交或者回滚,提交其实就是删除undo_log表的记录,因为之前在第一阶段就已经提交了,回滚就是读取undo_log表(记录操作前后的状态)执行反向sql操作

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值