南通企业自助建站系统,2022年最新新闻播报稿件,在线制作非主流闪光字体,免费企业建站源代码前情回顾#xff1a;
《Spring Cloud Alibaba基础教程#xff1a;使用Nacos实现服务注册与发现》《Spring Cloud Alibaba基础教程#xff1a;支持的几种服务消费方式》《Spring Cloud Alibaba基础教程#xff1a;使用Nacos作为配置中心》《Spring Cloud Alibaba基础教程
《Spring Cloud Alibaba基础教程使用Nacos实现服务注册与发现》《Spring Cloud Alibaba基础教程支持的几种服务消费方式》《Spring Cloud Alibaba基础教程使用Nacos作为配置中心》《Spring Cloud Alibaba基础教程Nacos配置的加载规则详解》《Spring Cloud Alibaba基础教程Nacos配置的多环境管理》
对于Nacos作为配置中心的使用通过之前的几篇博文我们已经介绍了如何在Nacos中创建配置内容、Nacos配置内容与Spring应用配置之间的对应关系以及实战中多环境下的配置管理方案。
但是我们实际应用过程中还会经常碰到这样的问题有时候我们会对应用的配置根据具体作用做一些拆分存储在不同的配置文件中除了归类不同的配置之外也可以便于共享配置给不同的应用。对于这样的需求Nacos也可以很好的支持下面就来具体介绍一下当使用Nacos时我们如何加载多个配置以及如何共享配置。
加载多个配置
通过之前的学习我们已经知道Spring应用对Nacos中配置内容的对应关系是通过下面三个参数控制的
spring.cloud.nacos.config.prefixspring.cloud.nacos.config.file-extensionspring.cloud.nacos.config.group
默认情况下会加载Data ID${spring.application.name}.propertiesGroupDEFAULT_GROUP的配置。
假设现在有这样的一个需求我们想要对所有应用的Actuator模块以及日志输出做统一的配置管理。所以我们希望可以将Actuator模块的配置放在独立的配置文件actuator.properties文件中而对于日志输出的配置放在独立的配置文件log.properties文件中。通过拆分这两类配置内容希望可以做到配置的共享加载与统一管理。
这时候我们只需要做以下两步就可以实现这个需求
第一步在Nacos中创建Data IDactuator.propertiesGroupDEFAULT_GROUP和Data IDlog.propertiesGroupDEFAULT_GROUP的配置内容。 第二步在Spring Cloud应用中通过使用spring.cloud.nacos.config.ext-config参数来配置要加载的这两个配置内容比如
spring.cloud.nacos.config.ext-config[0].data-idactuator.propertiesspring.cloud.nacos.config.ext-config[0].groupDEFAULT_GROUPspring.cloud.nacos.config.ext-config[0].refreshtruespring.cloud.nacos.config.ext-config[1].data-idlog.propertiesspring.cloud.nacos.config.ext-config[1].groupDEFAULT_GROUPspring.cloud.nacos.config.ext-config[1].refreshtrue可以看到spring.cloud.nacos.config.ext-config配置是一个数组List类型。每个配置中包含三个参数data-id、grouprefresh前两个不做赘述与Nacos中创建的配置相互对应refresh参数控制这个配置文件中的内容时候支持自动刷新默认情况下只有默认加载的配置才会自动刷新对于这些扩展的配置加载内容需要配置该设置时候才会实现自动刷新。
共享配置
通过上面加载多个配置的实现实际上我们已经可以实现不同应用共享配置了。但是Nacos中还提供了另外一个便捷的配置方式比如下面的设置与上面使用的配置内容是等价的
spring.cloud.nacos.config.shared-dataidsactuator.properties,log.propertiesspring.cloud.nacos.config.refreshable-dataidsactuator.properties,log.propertiesspring.cloud.nacos.config.shared-dataids参数用来配置多个共享配置的Data Id多个的时候用用逗号分隔spring.cloud.nacos.config.refreshable-dataids参数用来定义哪些共享配置的Data Id在配置变化时应用中可以动态刷新多个Data Id之间用逗号隔开。如果没有明确配置默认情况下所有共享配置都不支持动态刷新
配置加载的优先级
当我们加载多个配置的时候如果存在相同的key时我们需要深入了解配置加载的优先级关系。
在使用Nacos配置的时候主要有以下三类配置
A: 通过spring.cloud.nacos.config.shared-dataids定义的共享配置B: 通过spring.cloud.nacos.config.ext-config[n]定义的加载配置C: 通过内部规则spring.cloud.nacos.config.prefix、spring.cloud.nacos.config.file-extension、spring.cloud.nacos.config.group这几个参数拼接出来的配置
要弄清楚这几个配置加载的顺序我们从日志中也可以很清晰的看到我们可以做一个简单的实验
spring.cloud.nacos.config.ext-config[0].data-idactuator.propertiesspring.cloud.nacos.config.ext-config[0].groupDEFAULT_GROUPspring.cloud.nacos.config.ext-config[0].refreshtruespring.cloud.nacos.config.shared-dataidslog.propertiesspring.cloud.nacos.config.refreshable-dataidslog.properties根据上面的配置应用分别会去加载三类不同的配置文件启动应用的时候将会在日志中看到如下输出
2019-02-08 21:23:02.665 INFO 63804 --- [main] o.s.c.a.n.c.NacosPropertySourceBuilder : Loading nacos data, dataId: log.properties, group: DEFAULT_GROUP2019-02-08 21:23:02.671 INFO 63804 --- [main] o.s.c.a.n.c.NacosPropertySourceBuilder : Loading nacos data, dataId: actuator.properties, group: DEFAULT_GROUP2019-02-08 21:23:02.677 INFO 63804 --- [main] o.s.c.a.n.c.NacosPropertySourceBuilder : Loading nacos data, dataId: alibaba-nacos-config-client.properties, group: DEFAULT_GROUP后面加载的配置会覆盖之前加载的配置所以优先级关系是A B C
参考资料
Nacos官方文档
代码示例
本文示例读者可以通过查看下面仓库的中的alibaba-nacos-config-client项目
Githubhttps://github.com/dyc87112/SpringCloud-Learning/Giteehttps://gitee.com/didispace/SpringCloud-Learning/
如果您对这些感兴趣欢迎star、follow、收藏、转发给予支持
以下专题教程也许您会有兴趣
Spring Boot基础教程Spring Cloud基础教程