Seata介绍

相关概念:
Transaction Coordinator (TC): 事务协调器,维护全局事务的运行状态,负责协调并驱动全局事务的提交或回滚。

Transaction Manager (TM): 控制全局事务的边界,负责开启一个全局事务,并最终发起全局提交或全局回滚的决议。

Resource Manager (RM): 控制分支事务,负责分支注册、状态汇报,并接收事务协调器的指令,驱动分支(本地)事务的提交和回滚。

Seata对分布式事务提供了三种模式AT、MT和混合模式。
Seata(原名Fescar)是基于二阶段提交协议的分布式事物,但是解决了XA的缺点:

  • Seata再第一阶段就已经完成本地事物的提交并且释放资源,在大并发下避免同步阻塞问题,提交操作也是异步执行。
  • 数据不一致:如果出现部分commit失败,那么fescar-server会根据当前的事务模式和分支事务的返回状态的结果来进行不同的重试策略。

AT模式

AT模式:主要关注多 DB 访问的数据一致性,实现起来比较简单,对业务的侵入较小。
AT模式主要对业务代码无侵入,只需要添加注解、配置文件、加一个undo_log表即可。


image.png
  1. TM向TC申请开启全局事务,事务创建成功后会生成一个全局唯一的XID,并再TC上注册一个锁,锁住调用链路中需要变动的资源。
  2. TM将XID在整个调用链路中传递(基于ThraedLocal)。
  3. RM携带事务ID去TC寻找对应ID的全局事务并把自己的本地事务归属进全局事务。
  4. 不管RM执行成功或者失败最终都会告知TM
  5. TM向TC发送提交或回滚决议。
  6. TC调度XID下的分支事务完成提交或回滚操作。
    全局提交是异步。

在失败时,每个RM中本地事务时处于已提交的状态,但上了一个锁 。
事务管理器如果收到成功消息直接提交全局事务释放锁,如果失败,则先同步回滚(基于undo log反向更新)回滚完成后异步删除undo log数据,并释放锁。

你可能感兴趣的:(Seata介绍)