3.1分布式事务基本概念

微服务多个模块(例如三个模块)被拆分成三个独立的应用,分别对应三个不同的独立数据源,每个服务内部的数据一致性由本地事务来保证。但是全局的数据一致性问题没法保证。
3、SpringCloud Alibaba Seata处理分布式事务 - 图1
一次业务操作需要跨多个数据源或需要跨多个系统进行远程调用,就会产生分布式事务问题。——保障全局数据的一致性问题!——Senta!

3.2 Senta的基本概念

Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。

3.2 一个典型的Senta过程

一个典型的分布式事务过程:分布式事务处理过程的 一个ID+三组件模型。


3、SpringCloud Alibaba Seata处理分布式事务 - 图2
★处理过程:
step1:TM向TC申请开启一个全局事务,全局事务创建成功并生成一个全局唯一的XID;
step2:XID在微服务调用链路的上下文中传播;
step3:RM向TC注册分支事务,将其纳入XID对应全局事务的管辖;
step4:TM向TC发起针对XID的全局提交或回滚决议;
step5:TC调度XID下管辖的全部分支事务完成提交或回滚请求。

3.3 Senta的下载与安装配置

1、下载安装senta,解压
seata所有配置1.4.2源文件: https://gitee.com/xyy-kk_admin/springcloud-config/tree/master/seata-conf
2、配置senta的数据源为db(mysql)(1.4.2版本需要手动添加)
3、在mysql数据库中创建相应的数据库senta,并创建相应的数据库表branch_table、global_table、lock_table
SQL获取地址: https://gitee.com/xyy-kk_admin/springcloud-config/tree/master/seata-sql自行导入…
4、修改registry.conf文件 ,整合nacos,配置nacos的地址

3.3 Senta实现订单—库存——账户分布式微服务事务处理

实现下订单——减库存——减账户!!!
3、SpringCloud Alibaba Seata处理分布式事务 - 图3

3.3.1 订单—库存——账户数据库准备

  1. ![image.png](https://cdn.nlark.com/yuque/0/2021/png/21962920/1629009730768-327d5741-54a8-4b29-a8a9-9d3b06280774.png#align=left&display=inline&height=463&margin=%5Bobject%20Object%5D&name=image.png&originHeight=617&originWidth=571&size=85616&status=done&style=none&width=428)

3.3.1 订单—库存——账户微服务业务逻辑

step1:实现订单module的微服务创建 3、SpringCloud Alibaba Seata处理分布式事务 - 图4step2:实现库存module的微服务创建 3、SpringCloud Alibaba Seata处理分布式事务 - 图5step3:实现账户module的微服务创建 3、SpringCloud Alibaba Seata处理分布式事务 - 图6