2.1 Nacos配置管理
一、统一配置管理
配置更改热更新
Nacos进行配置
Nacos菜单栏找到配置列表(配置管理-配置列表)
点击新建按钮,在表单中填写内容
Data Id:配置文件的名称,必须唯一(服务名称-环境.yaml,如:snow-user-dev.yaml,后缀建议全称)
Group:默认即可
描述:描述内容即可
配置格式:按照Data Id的后缀来
配置内容:有热更新需求的内容
发布
二、微服务拉取配置
配置获取流程:先读取bootstrap.yml,在读取application.yml,这就可以通过bootstrap.yml获取nacos的配置了
步骤:
引入Nacos客户端管理依赖坐标
<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency>新建bootstrap.yml文件,此文件是引导文件,优先级高于application.yml
假设,Nacos中创建的配置名为:user-server-dev.yaml
spring: application: name: user-server # 服务名 profiles: active: dev # 开发环境 cloud: nacos: config: # 配置中心配置 file-extension: yaml # 文件后缀名 server-addr: 地址:端口 # Nacos地址 namespace: 命名空间id # 创建命名空间时候生成的id discovery: # 命名空间配置 server-addr: 地址:端口 # Nacos地址 namespace: 命名空间id # 创建命名空间时候生成的id注意:Nacos中的名字与bootstrap.yml中配置的name、active、file-extension有关系!!!
删除applciation.yml中的重复配置
注意
新版SpringCloud中没有引入bootstrap包,需要手动引入
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bootstrap</artifactId> </dependency>同时需要引入健康检查
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>启动类上需要添加相应注解:
@SpringBootApplication @EnableDiscoveryClient @MapperScan("cn.learn.user.mapper") public class UserApplication { public static void main(String[] args) { SpringApplication.run(UserApplication.class, args); } }
三、配置自动刷新
需要通过两种方式实现配置的热更新:
方式一:在使用@Value注解的方法所在类上添加@RefreshScope注解
@RestController @RequestMapping("/test") @RefreshScope public class test { @Value{"${teat.name}"} private String name; }方式二:使用@ConfigurationProperties注解——推荐用法
@Component @Data @ConfigurationProperties(prefix = "test") public class TestProperties{ private String name; }备注:通过类来实现配置的加载
四、多环境配置共享
微服务在启动的时候会从nacos中读取多个配置文件
[spring.application.name]-[spring.profiles.active].yaml,例如:user-service-dev.yaml
[spring.application.name].yaml,例如user-service.yaml
所以无论环境怎么变化,[spring.application.name].yaml这个文件一定会被加载,因此,多环境共享配置一般写在这个配置文件中
备注:教案中的配置都是写在nacos的public环境中
也可以写在程序的application.yml配置中
如果多环境中有相同的配置,本地 < [spring.application.name].yaml < [spring.application.name]-[spring.profiles.active].yaml
五、Nacos集群搭建
集群结构图:
官方集群图:

理解的集群图:

集群搭建
初始化数据库
将nacos的数据存储改为数据库连接,现在数据库汇总创建对应的数据表,Nacos的文件包中存在对应sql语句
下载nacos,并解压
配置nacos:
集群配置:
修改config目录中的cluster.conf.example,重命名为cluster.conf
在下面删掉原配置信息,添加自己的配置信息
也就是自己的Nacos集群的:服务器地址:端口号
MySQL配置以及application.properties配置:
详见第一天的Nacos安装
进入每个nacos目录的bin目录下,输入启动命令即可
sh startup.sh配置Nginx反向代理
在nginx中添加对应的config配置
upstream nacos-cluster { # 所有nacos的连接地址以及端口号 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; } }备注:大部分配置不用解释
代码中配置nacos的连接地址:
spring: cloud: nacos: server-addr: localhost:80 # Nacos地址备注:直接访问nginx的代理连接即可
优化:
实际部署时,需要给做反响代理的服务器设置一个域名,这样后续如果nacos服务器ip有了变更,也无需修改代码
Nacos的各个节点应该部署到多个不同的服务器上,做好容灾和隔离
最后更新于
这有帮助吗?