0%

使用Nacos配置中心

使用Nacos配置中心

Nacos还可以替代springCloudConfig来完成配置中心功能,基础层面通过DataIdGroup来定位配置内容

引入依赖

1
2
3
4
5
<!-- spring cloud alibaba nacos 配置-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
server:
port: 9001
spring:
application:
name: springcloudalibaba-provider-nacos
profiles:
active: dev
cloud:
nacos:
discovery:
server-addr: localhost:8848 #nacos注册中心地址
config:
file-extension: yaml #指定配置文件后缀
server-addr: localhost:8848 #nacos配置中心地址 文件名称为${spring.application.name}-${spring.profile.active}.${spring.cloud.config.file-extension}

management:
endpoints:
web:
exposure:
include: '*'

在Nacos中dataId组成部分为

1
2
3
4
5
6
7
${prefix}-${spring.profiles.active}.${file-extension}

prefix 默认为 spring.application.name 的值,也可以通过配置项 spring.cloud.nacos.config.prefix来配置

当 spring.profiles.active 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成 ${prefix}.${file-extension},但是还是应该配置spring.profiles.active

file-exetension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。目前只支持 properties 和 yaml/yml 类型

该配置文件所对应的dataId为springcloudalibaba-provider-nacos-dev.yaml

Nacos添加配置

共享配置和扩展配置

除了每个微服务特有的配置之外,我们还经常会遇到多个微服务共用的配置,如数据库连接/redis连接等,nacos也提供了该功能

  • shared-dataids 可以配置多个共享配置,多个使用逗号隔开
  • ext-config 可以配置扩展配置,是一个数组
1
2
3
4
5
6
7
8
9
10
11
12
13
spring:
cloud:
nacos:
config:
server-addr: localhost:8848
# 用于共享的配置文件,和项目在相同的Group时可以使用
shared-dataids: common-mysql.yaml,common-redis.yaml
# 扩展配置,可以自定义group,解决了shared-dataids只能在与项目相同的group的局限性
# 优先级大于 shared-configs,在 shared-configs 之后加载
ext-config:
- data-id: nacos-config-base.yaml
group: EXAMPLE_GROUP
refresh: true

版本不同可能配置方式不一样,有的版本好像叫shared-configs、extension-configs

自动刷新

如果想要实现自动刷新,则在对应类上添加@RefreshScope注解

1
2
3
4
5
6
7
8
9
10
11
12
13
@RestController
@RequestMapping("/config")
@RefreshScope
public class ConfigController {

@Value("${config.value}")
private String value;

@RequestMapping("/get")
public String config(){
return value;
}
}

欢迎关注我的其它发布渠道