Nacos配置管理
统一配置管理
为什么需要Nacos进行统一配置管理?
在生产环境中有数十台甚至上百台服务器,我现在需要对这十几台甚至上百台服务器的配置文件进行修改,而且服务器中配置文件修改的内容可能是一样的,修改完配置文件后还需要对这些服务器进行重启,这样非常麻烦。
我现在希望不需要逐个配置文件去修改,只需要在一个配置文件,且修改后服务不需要重启,修改的配置文件能立即生效。这个就是配置的热更新,而实现这个功能就需要配置管理服务。
什么是配置管理服务?
配置管理服务记录微服务的核心配置,微服务启动的时候就会读取配置管理服务的配置,再与本地的配置结合作为一个完整的配置。
将来微服务有什么需要更新的配置,直接修改配置管理服务里面的配置即可,更新后无需重启服务立即生效,会自动通知微服务修改了哪些配置,实现热更新。
新建配置
Data ID:其实就是配置文件名,唯一;
由三部分组成 【服务名】-【profile当前项目运行环境】【.】【后缀名】
eg:userservice-dev.yaml、userservice-test.yaml
Group:组,默认就好无需修改;
配置格式:后缀名为 .yaml,那么这里就要选择 YAML;其它同理;
配置内容:统一配置的内容,将来做热更新的配置、经常变化的配置(类似开关类型的配置);并不是所有配置都有此需求,比如数据库地址配好一般都不需要改变,就不用配置到此处;
服务如何读取Nacos配置中心配置的内容呢 ?
1、服务启动后优先读取bootstrap.yml配置文件,在此文件中配置nacos地址;
2、bootstrap.yml配置文件优先级高于application.yml配置文件;
Nacos统一配置管理-配置步骤
1、引入Nacos的配置管理客户端依赖
<!-- Nacos的配置管理客户端依赖 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>2.2.5.RELEASE</version>
</dependency>
2、在userservice中的resource目录添加一个 bootstrap.yml 文件,这个文件是引导文件,优先级高于application.yml配置文件;
注意:认真观察配置文件,由【服务名称-开发环境.后缀名】组成的名字就是你在Nacos配置中心配置的 Data ID;
spring:
application:
name: userservice #服务名称
profiles:
active: dev #开发环境,这里是dev
cloud:
nacos:
server-addr: localhost:8848 #Nocas地址
config:
file-extension: yaml #文件后缀名
如何知道服务真的从Nacos配置中心中读取到配置了呢
在userservice服务控制层,编写读取配置文件的代码,测试;
将配置交给Nacos管理的步骤-总结
1、在Nacos中添加配置文件
2、在微服务中引入nacos的config依赖
3、在微服务中添加bootstrap.yml,配置nacos地址、当前环境、服务名称、文件后缀名。这些决定了程序启动时去nacos读取哪些文件。