seata分布式事务~XA模式 ~ langhai

林书豪
2023-01-10 00:13:30
seata分布式事务~XA模式 浪海值:1617度
文章标签:seata分布式事务
文章摘要:待更新
使用新的显示器:新的显示器 如果遇到图片单击即可放大/缩小。

seata分布式事务~XA模式

XA模式分为两个阶段也就是 XA两阶段提交。

RM第一阶段的工作:

   注册分支事务到TC,执行业务SQL是不提交的,然后把这个事务的状态通知TC。

RM第二阶段的工作:

   接收TC的指令,分支事务执行提交或者回滚。

TC第二阶段的工作:

   就是检查各个分支的事务执行状态。

   分支执行事务全部成功 ==>> 通知所有RM提交事务。

   分支事务有失败的情况 ==>> 通知所有RM回滚事务。

优点:

   事务是强一致性的,满足ACID的原则。没有代码的侵入。

缺点:

   但是性能相对来说较差,第一阶段会锁定数据库的资源,要等到第二阶段结束之后才会释放。

   依赖关系型数据库实现。


seata实现方式:

在参与分布式事务的每一个微服务当中开启XA模式。

seata:
  data-source-proxy-mode: XA

然后再分布式事务的入口加上注解

@GlobalTransactional

当程序出现异常的时候,可以在控制台观察到:

io.seata.rm.AbstractRMHandler            : Branch Rollbacked result: PhaseTwo_Rollbacked

也可以在数据库中查看各个表中的数据是没有发生变化的,是成功回滚了的。


提交评论