TX-LCN 实现 springCloud 分布式(不同服务)分布式事物
https://www.cnblogs.com/huanzi-qch/p/11057974.html https://www.txlcn.org/zh-cn/index.html
## 前言
再有人问你分布式事务,把这篇扔给他
这里测试 官网给的demo
https://www.consul.io/downloads.html注:-dev开发服务器模式启动,-node结点名为cy,-ui可以用界面访问,默认能访问试访问地址:http://localhost:8500 测试官网的demo还是可行的。有空再测试。这里先记录测试笔记
## 1、TX-LCN
简单介绍
特性一览
结构TX-LCN 主要有两个模块,Tx-Client(TC) Tx-Manager(TM). TC作为微服务下的依赖,TM是独立的服务。这里选择 eureka 作为 微服务注册与发现需要环境
注意:
2、Tx-Manager(事物协调器)
Tx-Manager的准备环境安装TM需要依赖的中间件: JRE1.8+, Mysql5.6+, Redis3.2+创建MySQL数据库, 名称为: tx-manager
1、准备依赖
2、 配置文件
3、TM后台登陆密码默认的 密码是codingapitx-lcn.manager.admin-key=123456
tx-lcn.manager.host=127.0.0.1tx-lcn.manager.port=8070https://www.txlcn.org/zh-cn/docs/setting/manager.html
3、启动类
4、启动步骤
http://127.0.0.1:7970/
2、Tx-Client(发起事物的客户端)
1、引入依赖
2、配置文件
开发阶段最好开启日志,并设置为debug等级
3、启动类
4、如何使用分布式事物
注:@LcnTransaction的target是在方法上的,@Target({ElementType.METHOD})
4、测试
1、测试前提3个服务是带上注解:结果a 服务 调用 b、c 服务进行 进行 3个 insert 操作发现,abc三个服务 已经回滚2、测试前提是b服务去掉下面注解、a,c 不变:结果a 服务 调用 b、c 服务进行 进行 3个 insert 操作发现,ac三个服务 已经回滚,b 服务没有回滚3、数据库查看1、TM库
2、TC库测试发现,哪个服务出现异常,自动生成表 t_logger 并 添加一条记录