有道无术,术尚可求,有术无道,止于术。
本系列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
,可以看到数据库连接失败,说明修改的配置生效,配置中心集成成功: