10 01 2023

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

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


延伸阅读
  1. 浪海博客系统友情链接说明
  2. 浪海同志的一生
  3. 浪海皇室 QQ飞车手游
  4. 浪海博客系统部署说明
  5. minio 相关说明
  6. rabbitMQ 相关说明
  7. mysql相关说明
  8. java基础面试题002
  9. gateway服务网关基本使用
  10. ribbon负载均衡
如果出现代码等内容显示不正常,使用以前的显示器:以前的显示器
发表评论