seata的简介可以看一看这里:http://c.biancheng.net/springcloud/seata.html
我只是简单的介绍一下我使用的配置:
1.下载seata服务器:https://github.com/seata/seata/releases/tag/v1.4.2
下载后解压进入conf目录打开registry.conf文件 修改东西
其他的我省略了
registry {
# file 、nacos 、eureka、redis、zk、consul、etcd3、sofa 以什么方式来注册
type = "nacos" #将这个修改为nacos 因为我们使用nacos做注册中心
nacos {
application = "seata-server" #集群的名字 不用管
serverAddr = "localhost:8848" #nacos地址
group = "SEATA_GROUP"
namespace = ""
cluster = "default"
username = "nacos"
password = "nacos"
}
}
config {
# file、nacos 、apollo、zk、consul、etcd3
type = "nacos" #这里也修改为nacos 将nacos做配置中心
nacos {
serverAddr = "localhost:8848" #nacos的服务器地址
namespace = ""
group = "SEATA_GROUP"
username = "nacos" #nacos的密码和账号
password = "nacos"
#dataId = "seataServer.properties" 这个不使用
}
spring中的配置
我只是晓得bootstrap文件的加载先于application
================================bootstrap.yml文件======================================
spring:
cloud:
## Nacos认证信息
nacos:
config:
username: nacos
password: nacos
context-path: /nacos
server-addr: 127.0.0.1:1111 # 设置配置中心服务端地址
namespace: # Nacos 配置中心的namespace。需要注意,如果使用 public 的 namcespace ,请不要填写这个值,直接留空即可
===============================application.yml文件======================================
spring:
application:
name: spring-cloud-alibaba-seata-order-8005 #nacos中注册的服务名
#数据源配置
datasource:
driver-class-name: com.mysql.jdbc.Driver #数据库驱动
name: defaultDataSource
url: jdbc:mysql://localhost:3306/seata_order?serverTimezone=UTC #数据库连接地址
username: root #数据库的用户名
password: root #数据库密码
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:1111 #nacos 服务器地址
namespace: public #nacos 命名空间
username:
password:
sentinel:
transport:
dashboard: 127.0.0.1:8080 #Sentinel 控制台地址
port: 8719
alibaba:
seata:
#自定义服务群组,该值必须与 Nacos 配置中的 service.vgroupMapping.{my-service-group}=default 中的 {my-service-group}相同 一个这个就是代表一个集群 多个相同的服务可以使用同一个tx-service-group
tx-service-group: service-order-group
server:
port: 8005 #端口
seata:
application-id: ${spring.application.name}
#自定义服务群组,该值必须与 Nacos 配置中的 service.vgroupMapping.{my-service-group}=default 中的 {my-service-group}相同
tx-service-group: service-order-group
service:
grouplist:
#Seata 服务器地址
seata-server: 127.0.0.1:8091
# Seata 的注册方式为 nacos
registry:
type: nacos
nacos:
server-addr: 127.0.0.1:1111 #nacos的服务端地址
# Seata 的配置中心为 nacos
config:
type: nacos
nacos:
server-addr: 127.0.0.1:1111 #nacos的服务端地址
feign:
sentinel:
enabled: true #开启 OpenFeign 功能
management:
endpoints:
web:
exposure:
include: "*"
###################################### MyBatis 配置 ######################################
mybatis:
# 指定 mapper.xml 的位置 这个随便你
mapper-locations: classpath:mappers/*.xml
pom文件,这两个是我的springboot版本和spring-cloud-alibaba的版本
<spring-boot.version>2.3.12.RELEASE</spring-boot.version>
2.2.7.RELEASE
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>${spring-boot.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!--Snetinel 依赖-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
<!--SpringCloud ailibaba sentinel-datasource-nacos 后续做持久化用到-->
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-datasource-nacos</artifactId>
</dependency>
<!--引入 seata 依赖-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-seata</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.19</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.4</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<!--引入 OpenFeign 的依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
<version>2.2.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-loadbalancer</artifactId>
<version>2.2.5.RELEASE</version>
</dependency>
</dependencies>
将seata配置信息上传到nacos上:
- 下载并解压 Seata Server 的源码 seata-1.4.2.zip,然后修改 seata-1.4.2/script/config-center 目录下的 config.txt,修改内容如下。
主要就是修改这几个 其他的不管
#将 Seata Server 的存储模式修改为 db
store.mode=db
# 数据库驱动
store.db.driverClassName=com.mysql.cj.jdbc.Driver
# 数据库 url
store.db.url=jdbc:mysql://127.0.0.1:3306/seata?useSSL=false&characterEncoding=UTF-8&useUnicode=true&serverTimezone=UTC
# 数据库的用户名
store.db.user=root
# 数据库的密码
store.db.password=root
# 自定义事务分组 这个分组 最后面的一个比如service-order-group就是我们之前再yml文件中配置的那个 这个一个代表一个集群 所以我们每个功能创建一个这个 比如订单功能我们就写一个 service.vgroupMapping.dingdan=default
service.vgroupMapping.service-order-group=default
service.vgroupMapping.service-storage-group=default
service.vgroupMapping.service-account-group=default
- 在 seata-1.4.2\script\config-center\nacos 目录下,右键鼠标选择 Git Bush Here,在弹出的 Git 命令窗口中执行以下命令,将 config.txt 中的配置上传到 Nacos 配置中心。
运行打开git运行下面的命令 这个命令的 ip 和端口是nacos的端口 如果你不是再本机上记得修改
sh nacos-config.sh -h 127.0.0.1 -p 1111 -g SEATA_GROUP -u nacos -w nacos
- 使用浏览器访问 Nacos 服务器主页,查看 Nacos 配置列表,如下图。
我们不是下载了两个吗 一个源码 一个服务端 源码我们用来上传了我们的配置信息 ,接下来就是打开服务器了 :
进入它的bin目录下 双击打开
没出现报错信息或者命令行闪退就是运行成功了。
如果运行java程序的时候出现如下错误
这里我的情况是无法连接,如果你的seata的服务端是放在本机上的 你试一试用一台有公网连接的电脑试一试ping你的电脑可以ping通吗 ,如果不行 那就是证明是nacos找不到你的电脑,直接通过内网穿透,至于是啥 你们直接网上去搜索,不贵一般10元一个月,免费的比较慢
如果用来内网穿透记得把yml文件中的这里的地址改成我们的映射的那个公网ip地址
远程服务调用成功 你可以试一试故意失败 他会自动给你回滚所有的操作 这里的数据库我是直接用的我开头的网址里面的