前言
不得不说,seata的分布式事务还是坑挺多的,而且网上好多的解决方案都停留在旧版本,而你用的新版本导致好多问题需要踩,本人用了一天接入成功,成功整理出了一一篇最新的阿里推荐的版本 1.4.0 seata分布式事务接入,后面会提供网盘地址,大家直接从我那里下载需要的资料,避免因为版本,资料不统一,导致接入失败等等一系列的问题
一、项目版本
因为本人这个项目也接入了 lcn,所以都是支持lcn,seata分布式事务的,大家如果想了解lcn的看之前我写的文章
<java.version>1.8</java.version>
<spring.boot.version>2.2.9.RELEASE</spring.boot.version>
<spring.cloud.version>Hoxton.SR1</spring.cloud.version>
<spring.cloud.alibaba.version>2.2.0.RELEASE</spring.cloud.alibaba.version>
<mysql-connector-java.version>8.0.19</mysql-connector-java.version>
<pagehelper-spring-boot.version>1.2.13</pagehelper-spring-boot.version>
<lombok.version>1.18.12</lombok.version>
<lcn.version>5.0.2.RELEASE</lcn.version>
<dubbo.version>2.7.6</dubbo.version>
<seata.version>1.4.0</seata.version>
二、环境搭建:windows
1.数据库的准备
阿里要求必须有个seata的库,上面三张表就是阿里要求的库中的表数据,分别是 分支事务,全局事务,全局锁。因为阿里的seata并不是传统意义上的二阶段,具体原理不在这里说了
2.准备seata server和 Config文件(重要)
我这里因为接入的是nacos,所以需要好多步骤,其他接入方式不在这里介绍了
首先你要有如下从官网下的脚本,用来将你的相关数据同步到 nacos 配置中心然后,下载 seata-server
registry-conf文件
registry {
# file 、nacos 、eureka、redis、zk、consul、etcd3、sofa
type = "nacos"
nacos {
application = "serverAddr"
serverAddr = "127.0.0.1:8848"
group = "SEATA_GROUP"
namespace = ""
cluster = "default"
username = "nacos"
password = "nacos"
}
eureka {
serviceUrl = "http://localhost:8761/eureka"
application = "default"
weight = "1"
}
redis {
serverAddr = "localhost:6379"
db = "0"
}
zk {
cluster = "default"
serverAddr = "127.0.0.1:2181"
session.timeout = 6000
connect.timeout = 2000
}
consul {
cluster = "default"
serverAddr = "127.0.0.1:8500"
}
etcd3 {
cluster = "default"
serverAddr = "http://localhost:2379"
}
sofa {
serverAddr = "127.0.0.1:9603"
application = "default"
region = "DEFAULT_ZONE"
datacenter = "DefaultDataCenter"
cluster = "default"
group = "SEATA_GROUP"
addressWaitTime = "3000"
}
file {
name = "file.conf"
}
}
config {
# file、nacos 、apollo、zk、consul、etcd3
type = "nacos"
nacos {
serverAddr = "127.0.0.1:8848"
namespace = ""
group = "SEATA_GROUP"
}
consul {
serverAddr = "127.0.0.1:8500"
}
apollo {
app.id = "seata-server"
apollo.meta = "http://192.168.1.204:8801"
namespace = "application"
}
zk {
serverAddr = "127.0.0.1:2181"
session.timeout = 6000
connect.timeout = 2000
}
etcd3 {
serverAddr = "http://localhost:2379"
}
file {
name = "file.conf"
}
}
上面是注册到nacos的配置,所以我就不要 那个file.conf文件了。下面就是关键的几步了,因为我觉得上面使用起来都是没问题,没有坑的。 启动 seata-server之前,同步config文件到nacos中修改上面的config.txt
修改后保存,然后windows 需要 在gitbase 界面启动,在当前路径页面,右击鼠标选择 gitbase命令
执行如下 sh nacos-config.sh 127.0.0.1 然后知道出现
查看nacos是否同步到配置中心
启动seata-server,并查看nacos服务列表是否注册成功
三、项目源代码
项目结构
启动服务出现以下内容代表成功注册到seata协调者中启动展示
演示出错的情况
数据插入情况我就懒得演示了,相信大家看到这里已经很明白了
获取分布式获取代码及资料,都已经放在了github上,自己下载即可
https://github.com/huyufan1995/blog/wiki
欢迎关注我的微信公众号 【猿之村】
来聊聊Java面试 加我的微信进一步交流和学习,微信手动搜索 【codeyuanzhicunup】添加即可 如有相关技术问题欢迎留言探讨,公众号主要用于技术分享,包括常见面试题剖析、以及源码解读、微服务框架、技术热点等。