springcloud 分布式事务
1.下载Consul
https://www.consul.io/downloads.html
下载对应的版本
cmd切换到consul解压目录,即consul.exe目录,执行输入consul出现如下表示安装成功
cmd到consul安装目录键入命令:
consul.exe agent -dev -ui -node=cy ///可指定节点node
consul.exe agent -dev 本地模式,将会使用127.0.0.1 的ip地址
consul.exe agent -dev -client 192.168.xx.xx 远程模式
我这里使用的是:启动脚本:consul agent -dev -ui (dev模式)
http://localhost:8500/ui/dc1/services 查看consul信息
2.下载tx-lcn框架代码,启动txlcn-tm项目(修改数据库连接信息)
2.1创建MySQL数据库, 名称为: tx-manager
2.2创建数据表
CREATE TABLE `t_tx_exception` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`group_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`unit_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`mod_id` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`transaction_state` tinyint(4) NULL DEFAULT NULL,
`registrar` tinyint(4) NULL DEFAULT NULL,
`remark` varchar(4096) NULL DEFAULT NULL,
`ex_state` tinyint(4) NULL DEFAULT NULL COMMENT '0 未解决 1已解决',
`create_time` datetime(0) NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT =
3.http://localhost:7970/admin/index.html#/
红框里面的2是因为我已经启动了后续操作,第一次应该是0
4. 下载微服务代码
5. 启动微服务(修改对应的数据库连接,配置文件没有配置tx-tm的链接,默认会有,tm端口也是默认的端口)
1)如果不用默认的,则需要在tx-tm项目的配置文件新增配置:
#tx-lcn.logger.enabled=true
# TxManager Host Ip
tx-lcn.manager.host=127.0.0.1
# TxClient连接请求端口
tx-lcn.manager.port=8070
2)微服务中的两个配置文件新增配置:
tx-lcn.client.manager-address=127.0.0.1:8070
6.测试 http://localhost:8090/start?money=100 手动抛出了异常,a b 数据库数据回滚都为1000 说明成功!
7.微服务两个数据库信息
创建数据库bank-a和bank-b 两个数据库都创建t_bank表如下:
CREATE TABLE `t_bank` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`money` int(10) DEFAULT NULL,
`user` varchar(32) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;
insert into t_bank(money,user) values(1000,'xiaoming');
8.经过步骤6的测试,数据库的数据还是初始的1000 说明数据已经回滚了。 (这里测试了一下,大概花了30s的时间数据库的数据进行了回滚)。