- 一、配置中心概述
- 二、Nacos作为配置中心
- 三、基本使用
- 3.1 引入依赖
- 3.2 在 `bootstrap.properties` 中配置 Nacos server 的地址和应用名
- 3.3 通过 Spring Cloud 原生注解 `@RefreshScope` 实现配置自动更新:
- 3.4 新建配置
- 四、命名空间
- 4.1 创建新空间
- 4.2 指定空间
- 五、配置回滚
- 六、加载多配置文件
- 七、配置的分组
- 八、更多配置项
- 九、结束语
二、Nacos作为配置中心在系统开发过程中,开发者通常会将一些需要变更的参数、变量等从代码中分离出来独立管理,以独立的配置文件的形式存在。
目的:是让静态的系统工件或者交付物(如 WAR,JAR 包等)更好地和实际的物理运行环境进行适配。
配置管理一般包含在系统部署的过程中,由系统管理员或者运维人员完成。配置变更是调整系统运行时的行为的有效手段。
如果微服务架构中没有使用统一配置中心时,所存在的问题:
- 配置文件分散在各个项目里,不方便维护。
- 配置内容安全与权限。
- 更新配置后,项目需要重启。
三、基本使用Nacos配置中心特点:
- 系统配置的集中管理(编辑、存储、分发)。
- 动态更新不重启。
- 回滚配置(变更管理、历史版本管理、变更审计)等所有与配置相关的活动。
3.1 引入依赖从配置中心读取配置,分以下3步:
3.2 在 bootstrap.properties 中配置 Nacos server 的地址和应用名com.alibaba.cloud spring-cloud-starter-alibaba-nacos-config
说明:
之所以需要配置 spring.application.name ,是因为它是构成 Nacos 配置管理 dataId字段的一部分。
在springboot工程中,bootstrap.properties的加载优先级更高。
下面展示两种不同格式的配置方式:
-
方式一:properties文件
spring.cloud.nacos.config.server-addr=127.0.0.1:8848 # 该配置影响统一配置中心中的dataId。 spring.application.name=nacos-provider
-
方式二:yaml文件
spring: application: name: nacos-provider cloud: nacos: config: server-addr: 127.0.0.1:8848 # 默认读取.properties后缀文件,此处指定读取yaml。 file-extension: yaml
@RestController
@RefreshScope
public class ProviderController {
@Value("${myName}")
private String name;
@RequestMapping("hello")
public String hello(){
return "hello " + name;
}
}
3.4 新建配置
四、命名空间dataId 的完整格式:${prefix}-${spring.profile.active}.${file-extension}
prefix 默认为所属工程配置spring.application.name 的值(即:nacos-provider),也可以通过配置项 spring.cloud.nacos.config.prefix来配置。
spring.profile.active 即为当前环境对应的 profile,详情可以参考 Spring Boot文档。
注意:当 spring.profile.active 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成 ${prefix}.${file-extension}
file-exetension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。
目前只支持 properties 和 yaml 类型。
总结:配置所属工程的spring.application.name的值 + “.” + properties/yml
4.1 创建新空间 4.2 指定空间在实际开发中,通常有多套不同的环境(默认只有public),那么这个时候可以根据指定的环境来创建不同的 namespce,
例如,开发、测试和生产三个不同的环境,那么使用一套 nacos 集群可以分别建以下三个不同的 namespace。以此来实现多环境的隔离。
# 在配置中指定namespaceId spring.cloud.nacos.config.namespace=xxxx五、配置回滚
六、加载多配置文件回滚配置只需要两步:
- 查看历史版本
- 回滚到某个历史版本
偶尔情况下需要加载多个配置文件。假如现在dev名称空间下有三个配置文件:nacos-provider.properties、redis.properties、jdbc.properties。
- jdbc.properties:
jdbc.url=xxxxxx
- redis.properties:
redis.url=yyyy
nacos-provider.properties默认加载,怎么加载另外两个配置文件?
在bootstrap.properties文件中添加如下配置:
spring.cloud.nacos.config.ext-config[0].data-id=redis.properties # 开启动态刷新配置,否则配置文件修改,工程无法感知 spring.cloud.nacos.config.ext-config[0].refresh=true spring.cloud.nacos.config.ext-config[1].data-id=jdbc.properties spring.cloud.nacos.config.ext-config[1].refresh=true七、配置的分组
在实际开发中,除了不同的环境外。不同的微服务或者业务功能,可能有不同的redis及mysql数据库。
区分不同的环境我们使用名称空间(namespace),区分不同的微服务或功能,使用分组(group)。
当然,你也可以反过来使用,名称空间和分组只是为了更好的区分配置,提供的两个维度而已。
新增一个redis.properties,所属分组为provider:
现在开发环境中有两个redis.propertis配置文件,一个是默认分组(DEFAULT_GROUP),一个是provider组。
- 默认情况下从DEFAULT_GROUP分组中读取redis.properties,如果要切换到provider分组下的redis.properties,需要添加如下配置:
# 指定分组 spring.cloud.nacos.config.ext-config[0].group=provider
- 缺点:将来每个分组下会有太多的配置文件,不利于维护。
- 建议:通过命名空间区分业务功能,分组区分环境。
“-------怕什么真理无穷,进一寸有一寸的欢喜。”
微信公众号搜索:饺子泡牛奶。



