Nacos配置中心
今天花时间把nacos配置中心学习了一下,做个笔记记录一下!
Nacos 可以与 Spring, Spring Boot, Spring Cloud 集成,并能代替 Spring Cloud Eureka, Spring Cloud Config。通过 Nacos Server 和 spring-cloud-starter-alibaba-nacos-config 实现配置的动态变更。nacos配置中心:系统配置的集中管理(编辑、存储、分发)、动态更新不重启、回滚配置(变更管理、历史版本管理、变更审计)等所有与配置相关的活动。
应用场景
在系统开发过程中,开发者通常会将一些需要变更的参数、变量等从代码中分离出来独立管理,以独立的配置文件的形式存在。目的是让静态的系统工件或者交付物(如 WAR,JAR 包等)更好地和实际的物理运行环境进行适配。配置管理一般包含在系统部署的过程中,由系统管理员或者运维人员完成。配置变更是调整系统运行时的行为的有效手段。
如果微服务架构中没有使用统一配置中心时,所存在的问题:
- 配置文件分散在各个项目里,不方便维护
- 配置内容安全与权限
- 更新配置后,项目需要重启
具体配置
- 导入依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
- 此时需要创建bootstrap.yml配置文件
bootstrap.yml 和 application.yml 区别:- bootstrap.yml(先加载)用于应用程序上下文的引导阶段。
- bootstrap.yml (后加载)由父Spring ApplicationContext加载,父ApplicationContext 被加载到使用 application.yml 的之前。
配置nacos注册的发现地址: discovery. server-addr = xxx
配置nacos配置文件发现地址:config. server-addr = xxx,少配置会找不到配置文件位置
注意:此时如果使用yml格式的配置文件需要添加 file-extension: yml
spring:
application:
name: service-statistics # 微服务名称
profiles:
active: dev # 设置为开发环境
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848 # 配置nacos
config:
file-extension: yml
server-addr: 127.0.0.1:8848 # 发现配置文件地址
- nacos中创建配置文件
Data ID配置规则:{spring.profile.active}.${file-extension}
- prefix 默认为所属工程配置spring.application.name 的值(即:nacos-provider),也可以通过配置项 spring.cloud.nacos.config.prefix来配置。
- spring.profiles.active=dev 即为当前环境对应的 profile。 注意:当 spring.profiles.active 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成{file-extension}
- file-exetension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。目前只支持 properties 和 yaml 类型。
此时创建成功。- 启动项目即可发现端口号为8008
多配置文件加载
在一些情况下需要加载多个配置文件。假如现在dev名称空间下有三个配置文件:service-statistics.yml、redis.yml、jdbc.yml,即可以实现分开加载配置文件,将相同的配置信息分开,需要直接读取即可。
- 此处我建立了一个配置文件,将端口号该为8111,注释掉原来的端口号8008
- 又创建数据源的配置文件
- 此时在yml配置文件中添加以下配置,ext-config可以配置多个
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848 # 配置nacos
config:
file-extension: yml
server-addr: 127.0.0.1:8848 # 发现配置文件地址
ext-config[0]:
data-id: port.yml
refresh: true # 开启动态刷新配置,否则配置文件修改,工程无法感知
ext-config[1]:
data-id: datasource.yml
refresh: true
- 可以返现此时项目加载了三个配置文件
名称空间切换环境
在实际开发中,通常有多套不同的环境(默认只有public),那么这个时候可以根据指定的环境来创建不同的 namespce,例如,开发、测试和生产三个不同的环境,那么使用一套 nacos 集群可以分别建以下三个不同的 namespace。以此来实现多环境的隔离。
- 创建多个名称空间
- 克隆到到不同的空间环境
此时修改port为8520来做区别 yml配置文件中配置
config:
namespace: 8d5eccfa-9d86-4740-a6d5-d5ee5fc8a381
namespace如下图此时启动项目端口号为