前言
参考:https://www.jianshu.com/p/940e2cfab67e
quickstart:https://seata.io/zh-cn/docs/user/quickstart.html
内容
1.seata简介
Seata是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务。
TM:transaction manager
RM:resource manager
1)TM:事务的发起者。用来告诉 TC,全局事务的开始,提交,回滚。
2)RM:具体的事务资源,每一个 RM 都会作为一个分支事务注册在 TC。
3)TC 事务的协调者。也可以看做是 Fescar-server,用于接收我们的事务的注册,提交和回滚。
2.实战
2.1 准备
- 1.我们从github上下载seata应用jar包
- 2.在本地数据源数据库中添加seata的undo_log日志(在alibaba-order,alibaba-pay库里面)
|
|
- 3.需要使用tc,则需要启动,点击:seata-server.bat
2.2 工程集成
- 1.引入依赖(3个服务都添加)
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-seata</artifactId>
<version>2.1.1.RELEASE</version>
</dependency>
2.所有的资源服务中加入register,conf,因为服务端,客户端都需要注册,以及客户端配置;存放到resources目录下
3.我们是在biz-service上开启一个全局的事物来管理:pay-service和order-service;所以需要在biz-service的对应业务层加一个全局的事务注解: @GlobalTransactional(在最早的服务上加这个注解就可以了)
4.pay/order服务里面的jdbc是spring自己的数据源,这个时候,其实还没有完,我们需要使用seata来代理各个服务的数据源
5.启动biz-service时候报错,
我们需要在file里面配置group,规则:appliactionname-seata-service-group6.测试访问biz-service
我们重启:biz-service,然后访问:http://127.0.0.1:8010/biz
此时pay/order服务已经没有插入了数据