Nacos实现不同应用之间共享配置
目前Nacos提供了两种方式可以实现不同应用之间的配置共享
使用shared-dataids
首先需要到Nacos上创建一些共享配置
common1.yaml
common1:
key1: value1
common2.yaml
common2:
key2: value2
修改项目中的bootstrap.yml
文件如下
spring:
application:
name: ok-cloud
cloud:
nacos:
config:
server-addr: 127.0.0.1:8848
namespace: appblog
cluster-name: HZ
file-extension: yaml
# 共享配置的DataId,多个使用,分隔
# 越靠后,优先级越高
# .yaml后缀不能少,只支持yaml/properties
shared-dataids: common1.yaml,common2.yaml
# 哪些共享配置支持动态刷新,多个使用,分隔
refreshable-dataids: common1.yaml
profiles:
active: dev
从以上的配置示例可以看出,其实shared-dataids
的主要作用就是用来指定共享配置的Data ID,使得该微服务可以读取这些共享配置。同理,其他微服务若想读取这些共享配置,只需在项目的bootstrap.yml
文件中添加相应的shared-dataids
配置即可,如此一来就实现了多个微服务之间的配置共享。
@Value("${common1.key1}")
private String key1;
@Value("${common2.key2}")
private String key2;
@GetMapping("/key1")
public String testKey1() {
return key1;
}
@GetMapping("/key2")
public String testKey2() {
return key2;
}
使用ext-config
spring:
application:
name: ok-cloud
cloud:
nacos:
config:
server-addr: 127.0.0.1:8848
file-extension: yaml
ext-config:
# 需共享的DataId,yaml后缀不能少,目前只支持yaml/properties
# 越靠后,优先级越高 优先级common2.yaml > common1.yaml
- data-id: common1.yaml
# common1.yaml所在的group
group: DEFAULT_GROUP
# 是否允许刷新,默认false
refresh: true
- data-id: common2.yaml
group: DEFAULT_GROUP
refresh: true
profiles:
active: dev
ext-config
提供了较为细化的配置方式,并且可以指定配置组。到目前为止,我们介绍了三种从Nacos上读取配置的方式,其优先级如下:
shared-dataids < ext-config < 自动
除此之外,当存在相同的远程配置和本地配置时,远程配置优先级要高于本地配置文件。但可以通过添加如下配置调整,需要注意的是这段配置需要放在远程配置才会生效:
spring:
cloud:
config:
# 是否允许本地配置覆盖远程配置,默认true
allow-override: true
# 是否一切以本地配置为准,默认false
override-none: false
# 系统环境变量或系统属性才能覆盖远程配置文件的配置
# 本地配置文件中配置的优先级低于远程配置,默认true
override-system-properties: true
版权声明:
作者:Joe.Ye
链接:https://www.appblog.cn/index.php/2023/04/01/nacos-enables-shared-configuration-between-different-applications/
来源:APP全栈技术分享
文章版权归作者所有,未经允许请勿转载。
共有 0 条评论