畅购商城原本实现极为繁琐,专门搭建事物的微服务进行使用。但我认为过于繁琐,查阅文档,有另外的方式,每个微服务引入依赖即可。
Seata有3个基本组件:
-
Transaction Coordinator(TC):事务协调器,维护全局事务的运行状态,负责协调并驱动全局事务的提交或回滚。
-
Transaction Manager™:事务管理器,控制全局事务的边界,负责开启一个全局事务,并最终发起全局提交或全局回滚的决议。
-
Resource Manager(RM):资源管理器,控制分支事务,负责分支注册、状态汇报,并接收事务协调器的指令,驱动分支(本地)事务的提交和回滚。
-
Seata管理分布式事务的典型生命周期: -
TM 向 TC 申请开启一个全局事务,全局事务创建成功并生成一个全局唯一的 XID。
-
XID 在微服务调用链路的上下文中传播。
-
RM 向 TC 注册分支事务,将其纳入 XID 对应全局事务的管辖。
-
TM 向 TC 发起针对 XID 的全局提交或回滚决议。
-
TC 调度 XID 下管辖的全部分支事务完成提交或回滚请求。
首先引入依赖
这是官方文档,剩下的照着做就可以
https://github.com/seata/seata-samples/tree/master/springcloud-jpa-seata
提醒一点,就是file文件,必须要与服务一致