Nacos实现不同应用之间共享配置

目前Nacos提供了两种方式可以实现不同应用之间的配置共享

使用shared-dataids

首先需要到Nacos上创建一些共享配置

  • common1.yaml
1
2
common1:
key1: value1
  • common2.yaml
1
2
common2:
key2: value2

修改项目中的bootstrap.yml文件如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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配置即可,如此一来就实现了多个微服务之间的配置共享。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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上读取配置的方式,其优先级如下:

1
shared-dataids < ext-config < 自动

除此之外,当存在相同的远程配置和本地配置时,远程配置优先级要高于本地配置文件。但可以通过添加如下配置调整,需要注意的是这段配置需要放在远程配置才会生效:

1
2
3
4
5
6
7
8
9
10
spring:
cloud:
config:
# 是否允许本地配置覆盖远程配置,默认true
allow-override: true
# 是否一切以本地配置为准,默认false
override-none: false
# 系统环境变量或系统属性才能覆盖远程配置文件的配置
# 本地配置文件中配置的优先级低于远程配置,默认true
override-system-properties: true

Powered by AppBlog.CN     浙ICP备14037229号

Copyright © 2012 - 2021 APP开发技术博客 All Rights Reserved.

访客数 : | 访问量 :