六、Nacos配置管理
6.1、统一配置管理
实现配置更改的热更新
Nacos中的配置管理图
6.2、添加配置
在Nacos控制台界面
**注意:**不是把所有的配置文件都写进去,只是写一些有热更新需求的。
6.3、读取配置
6.3.1、读取配置流程概述
6.3.2、配置流程
1、引入配置管理客户端依赖
<!--nacos配置管理依赖-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
2、新建bootstrap.yml
文件
在项目中的resource目录添加一个bootstrap.yml
文件,这个文件是引导文件,优先级高于application.yml。
服务名称-开发环境.后缀名 —> 就是刚刚添加配置时的Id。
spring:
application:
name: userservice #服务名称
profiles:
active: dev # 开发环境,这里是dev
cloud:
nacos :
server-addr: LocaLhost:8848 # Nacos 地址
config:
file-extension: yaml #文件后缀名
6.3.3、配置自动更新(热更新)
Nacos中的配置文件变更后,微服务无需重启就可以感知。有两种配置方式实现。
1、方式一
在@Value注入的变量所在类上添加注解@RefreshScope
2、方式二(推荐使用)
使用@ConfigurationProperties
注解
6.4、多环境配置共享
微服务启动时会从nacos读取多个配置文件:
- [spring.application.name]-[spring.profiles.active].yaml,例如:userservice-dev.yaml。
- [spring.application.name].yaml,例如:userservice.yaml。
无论profile如何变化,[spring.application.name].yaml这个文件一定会加载,因此多环境共享配置可以写入这个文件。
6.5、配置优先级
- 服务名-profile.yaml > 服务名称.yaml > 本地配置
6.6、Nacos集群
6.6.1、搭建集群的基本步骤:
- 搭建数据库,初始化数据库表结构
- 下载nacos安装包
- 配置nacos
- 启动nacos集群
- nginx反向代理
6.6.2、 配置nacos
1、进入nacos的conf目录,修改配置文件cluster.conf.example
,重命名为cluster.conf
。
2、添加以下内容。
127.0.0.1:8845
127.0.0.1.8846
127.0.0.1.8847
3、修改application.properties
文件,添加数据库配置。
spring.datasource.platform=mysql #打开mysql集群
db.num=1 #集群数量
db.url.0=jdbc :mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=123
6.6.3、 启动nacos集群
依次进入bin
目录,打开cmd,执行
startup.cmd
6.6.4、 nginx反向代理
修改conf/nginx.conf
文件,配置文件如下
upstream nacos-cluster {
server 127.0.0.1:8845;
server 127.0.0.1:8846;
server 127.0.0.1:8847;
}
server {
listen 80;
server_ name localhost;
location /nacos {
proxy_ pass http://nacos-cluster;
}
}
6.6.5、java代码配置
其他配置也相似,直接访问locaLhost:80
spring:
application:
name: userservice
profiles:
active: dev #环境
cloud:
nacos:
server-addr: locaLhost:80 # nacos 地址
config:
file-extension: yaml #文件后缀名