nacos配置中心
Nacos 支持基于 DNS 和基于 RPC 的服务发现(可以作为springcloud的注册中心)、动态配置服务(可以做配置中心)、动态 DNS 服务。
首先启动nacos服务,进入nacos控制台:
配置模型
字段 | 描述 |
---|---|
Namespace | 命名空间,代表不同环境,如测试、开发、生成环境等,互相隔离 |
Group | 分组,根据实际需求开分,可以代表某个项目 |
Datald | 配置集,每个项目下往往有若干工程,配个配置集代表一个配置文件 |
发布配置
在nacos控制台打开菜单 配置管理 — 配置列表,可以点击添加按钮新建配置:
输入配置信息保存即可。
使用配置
Spring Cloud Nacos Config目前提供了三种配置能力从nacos拿去相关配置:
1.通过内部相关规则(应用名、扩展名)自动生成相关的dataid配置
2.通过自定义扩展dataid配置(ext-config[n]),内部以n的值越大则优先级越高
3.通过自定义共享dataid配置
当三种方式共同使用时,优先级为:内部规则 > 自定义扩展 > 自定义共享
1.导包
<!--引入nacos 配置中心client的依赖-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
2.修改配置文件
在springboot中,因为bootstrap配置文件优先级高于application,所以我们针对配置中心的配置项要放在bootstrap中:
server:
port: 8081
spring:
application:
name: shop-order
cloud:
nacos:
config:
server-addr: localhost:8848 # 配置中心地址
file-extension: yaml #dataid的名称就是application.name + file-extension组成的
#prefix: public_test #如果不是默认的application.name作为前缀 可以使用这个
namespace: 4f6b73f2-201b-429e-8b69-0804798b4914 # 指定具体的命名空间
group: SHOP_GROUP #指定分组
refresh-enabled: true # 动态刷新
自定义扩展dataid配置(推荐)
当我们一个项目中需要使用多个配置文件,或者单个配置文件想要被多个项目使用的时候,可以使用自定义扩展dataid配置方式:
server:
port: 8081
spring:
application:
name: shop-order
cloud:
nacos:
config:
server-addr: 1.116.1.2:8848
ext-config[0]:
data-id: aaa.yaml #dataid
ext-config[1]:
data-id: bbb.yaml #dataid
group: GLOBALE_GROUP # 分组 默认DEFAULT_GROUP
ext-config[2]:
data-id: ccc.yaml #dataid
group: GLOBALE_GROUP # 分组 默认DEFAULT_GROUP
refresh: true #开启动态刷新
多个配置文件,以ext-config[n]中n的值越大,则优先级越高。
注意:ext-config会提示已过时,但是不影响使用,当然也有替换方案:extension-configs[n] 或者 shared-configs[n]都可以。
自定义共享dataid配置(不推荐)
server:
port: 8081
spring:
application:
name: shop-order
cloud:
nacos:
config:
server-addr: 1.116.1.2:8848
shared-dataids: aaa.yaml,bbb,yaml.ccc.yaml #多个dataid逗号隔开
refreshable-dataids: aaa.yaml #动态刷新的dataid
这种方式也可以加载多个配置文件,但是仅限于默认分组DEFAULT_GROUP下的配置
命名空间
新建命名空间
命名空间id可以不填,会自动生成,新建完成之后可以进入配置列表进行查看:
配置信息拷贝到命名空间
方式一:导入导出
当我们需要将配置文件拷贝到其他命名空间时,直接在列表中勾选需要copy的数据,然后点击导出即可:
然后我们在其他命名空间进行导入即可:
方式二:克隆
选中需要克隆的数据,点击克隆按钮,选择目标空间即可:
历史版本
当我们修改过某个配置文件后,可以通过历史版本进行查看之前的版本,并且可以根据需要进行回滚:
监听查询
nacos提供配置订阅者即监听者查询能力,同时提供客户端当前配置的MD5校验值,以便帮助用户更好的检查配置变更是否推送到Client端:
注:要实现配置文件动态获取,需使用@RefreshScope注解
粗心大意遇到的问题:
之前代码配置什么的都是对的,但是一直获取不到配置文件,后面发现是在配置中心添加配置文件的时候dataid不正确导致的:
这里一定要跟上yaml后缀,刚开始就是因为没有写后缀 导致一直获取不到,粗心了
注:项目配置了nacos配置中心之后,也就是spring.cloud.nacos.config配置之后,可以不用再配置注册中心spring.cloud.nacos.discovery默认注册到public命名空间DEFAULT_GROUP分组。