有道无术,术尚可求,有术无道,止于术。
本系列Seata 版本 2.0.0
本系列Spring Boot 版本 3.2.0
本系列Spring Cloud 版本 2023.0.0
源码地址:https://gitee.com/pearl-organization/study-seata-demo
文章目录
- 1. 概述
- 2. 安装 Nacos 2.0
- 3. 配置
- 3.1 导入配置(不推荐)
- 3.2 自建配置(推荐)
- 3.3 注册、配置中心
- 3.4 验证
 
 
1. 概述
在前两篇文档中,我们部署了Seata服务端,并基于Spring Cloud Alibaba微服务框架模拟了电商用户下单操作,接下来学习Seata集成Nacos注册中心、配置中心。
 
2. 安装 Nacos 2.0
Nacos是Dynamic Naming and Configuration Service的首字母简称,读音为/nɑ:kəʊs/,从名字也可看出它的两大核心功能,即服务发现、配置管理。
Nacos安装文件在GitHub地址下载,Windows系统对应的安装包为nacos-server-2.2.3.zip,下载完成后,解压到相关目录:
 
 bin目录存放了Windows和Linux启动和停止运行的执行脚本:
 
 conf配置目录,存放所有的配置文件:
 
 各配置文件简要说明:
- 1.4.0-ipv6_support-update.sql:- Ipv6支持的数据库更新脚本
- announcement.conf:公告或官方提示
- application.properties:- Nacos服务端是使用- Spring Boot开发的,所以这个是服务端应用配置文件
- application.properties.example:服务端应用演示配置文件,包含了配置项及其相关说明
- cluster.conf.example:服务端集群环境演示配置文件,包含了配置项及其相关说明
- derby-schema.sql:- Derby数据库初始化脚本
- mysql-schema.sql:- Mysql数据库初始化脚本
- nacos-logback.xml:- Logback日志配置文件
target目录就是服务端的Spring Boot jar包,启动脚本也是通过java -jar命令运行的:
 
LICENSE授权文件,表明了Nacos使用的是Apache License Version 2.0,在商用时,需要保留该文件。
NOTICE公告文件,表明了Nacos属于阿里巴巴集团,使用时需要遵循相关协议。
启动十分简单,只需要在bin目录打开CMD窗口,输入startup.cmd -m standalone命令即可,standalone代表单机模式运行,非集群模式。启动时,会打印Nacos Banner图,以及版本、启动端口、进程Pid、控制台访问地址等信息:
 
 访问控制台地址,直接就进入到了Nacos主界面,因为服务端没有开启鉴权,所以是不需要登录的:
 
 新建一个seata-demo命名空间:
 
3. 配置
3.1 导入配置(不推荐)
config-center提供了集成配置中心时,导入配置用的相关脚本:
 
 nacos目录提供了Shell、Python两种脚本:
 
 README.md文件中提供了使用说明,例如使用Shell导入到Nacos时,包含了交互和非交互两种模式:
## 交互式
sh ${SEATAPATH}/script/config-center/nacos/nacos-config-interactive.sh
Please enter the host of nacos.
请输入nacos的host [localhost]:
>>>
Please enter the port of nacos.
请输入nacos的port [8848]:
>>>
Please enter the group of nacos.
请输入nacos的group [SEATA_GROUP]:
>>>
Please enter the tenant of nacos.
请输入nacos的tenant:
>>>
Please enter the username of nacos.
请输入nacos的username:
>>>
Please enter the password of nacos.
请输入nacos的password:
>>>
Are you sure to continue? [y/n]
## 非交互式
sh ${SEATAPATH}/script/config-center/nacos/nacos-config.sh -h localhost -p 8848 -g SEATA_GROUP -t 5a3c7d6c-f497-4d68-a71a-2e5e3340b3ca -u username -w password
参数说明:
| 参数 | 说明 | 
|---|---|
| -h | 主机地址,默认值为 localhost | 
| -p | 端口,默认值为 8848 | 
| -g | 配置分组,默认值为 EATA_GROUP | 
| -t | 租户信息,对应 Nacos的命名空间,默认值为“” | 
| -u | 用户名,默认值为 “” | 
| -w | 密码,默认值为 “” | 
在\seata\script\config-center\nacos目录,打开Git Bash(因为是Wins系统,无法直接执行Shell),输入导入命令:
 sh nacos-config.sh -h localhost -p 8848 -g SEATA_GROUP -t f2201f5a-ced8-4d17-b9a3-9ec969c12f70
开始执行:
 
 导入成功后,可以看到总共有118个配置项:
 
3.2 自建配置(推荐)
上述导入配置的方式,每个配置项都新建了一个配置文件,不方便查看管理,我们可以自建一个总的配置文件即可。
在seata-demo命名空间下(不要使用公共空间),新建一个配置:
- Data ID:- seata.properties
- Group:- SEATA_GROUP
- 格式:Properies
- 内容:复制seata\script\config-center\config.txt文件内容

3.3 注册、配置中心
进入seata\conf目录,修改application.yml文件:
 
 添加Nacos为注册、配置中心:
server:
  port: 7091
spring:
  application:
    name: seata-server
logging:
  config: classpath:logback-spring.xml
  file:
    path: ${log.home:${user.home}/logs/seata}
  extend:
    logstash-appender:
      destination: 127.0.0.1:4560
    kafka-appender:
      bootstrap-servers: 127.0.0.1:9092
      topic: logback_to_logstash
console:
  user:
    username: seata
    password: seata
seata:
  # 配置中心
  config:
    # 类型: nacos 、 consul 、 apollo 、 zk  、 etcd3
    type: nacos
    nacos:
      # nacos 服务端地址
      server-addr: 127.0.0.1:8848
      # 命名空间
      namespace: 7032916a-19f1-482e-a3eb-8a62226c2e4d
      # 分组
      group: SEATA_GROUP
      # 配置ID
      data-id: seata.properties
  # 注册中心
  registry:
    # 类型: nacos 、 eureka 、 redis 、 zk  、 consul 、 etcd3 、 sofa
    type: nacos
    nacos:
      # 指定注册至nacos注册中心的服务名
      application: seata-server
      server-addr: 127.0.0.1:8848
      group: DEFAULT_GROUP
      namespace: 7032916a-19f1-482e-a3eb-8a62226c2e4d
      # 指定注册至nacos注册中心的集群名
      cluster: default
  store:
    # support: file 、 db 、 redis 、 raft
    mode: file
  #  server:
  #    service-port: 8091 #If not configured, the default is '${server.port} + 1000'
  security:
    secretKey: SeataSecretKey0c382ef121d778043159209298fd40bf3850a017
    tokenValidityInMilliseconds: 1800000
    ignore:
      urls: /,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.jpeg,/**/*.ico,/api/v1/auth/login,/metadata/v1/**
3.4 验证
启动Seata后,在Nacos服务列表可以看到一个名称为seata-server的服务,表示注册成功:
 
 修改seata.properties中事务存储模式为db(数据库):
 
 重新启动Seata,可以看到数据库连接失败,说明修改的配置生效,配置中心集成成功:
 




![ConnectionResetError: [WinError 10054] 远程主机强迫关闭了一个现有的连接。](https://img-blog.csdnimg.cn/direct/b6491bfe2e2046fd8ffe0262c50f795a.png)














