首页 > 其他分享 >Nacos共享配置(shared-configs)和扩展配(extension-config)

Nacos共享配置(shared-configs)和扩展配(extension-config)

时间:2023-01-11 17:36:19浏览次数:34  
标签:group extension 配置 Nacos nacos shared configs

一、共享配置(shared-configs)和扩展配(extension-config)

日常开发中,多个模块可能会有很多共用的配置,比如数据库连接信息,Redis 连接信息,RabbitMQ 连接信息,监控配置等等。那么此时,我们就希望可以加载多个配置,多个项目共享同一个配置之类等功能,Nacos Config 也确实支持。

  • Nacos在配置路径spring.cloud.nacos.config.extension-config下,允许我们指定⼀个或多个额外配置。

  • Nacos在配置路径spring.cloud.nacos.config.shared-configs下,允许我们指定⼀个或多个共享配置。

上述两类配置都⽀持三个属性:data-idgroup(默认为字符串DEFAULT_GROUP)、refresh(默认为true)。

二、配置实例

spring:
  application:
    name: nacos-config-multi
  main:
    allow-bean-definition-overriding: true
  cloud:
    nacos:
      username: ${nacos.username}
      password: ${nacos.password}
      config:
        server-addr: ${nacos.server-addr}
        namespace: ${nacos.namespace}
        # 用于共享的配置文件
        shared-configs:
          - data-id: common-mysql.yaml
            group: SPRING_CLOUD_EXAMPLE_GROUP

          - data-id: common-redis.yaml
            group: SPRING_CLOUD_EXAMPLE_GROUP

          - data-id: common-base.yaml
            group: SPRING_CLOUD_EXAMPLE_GROUP

        # 常规配置文件
        # 优先级大于 shared-configs,在 shared-configs 之后加载
        extension-configs:
          - data-id: nacos-config-advanced.yaml
            group: SPRING_CLOUD_EXAMPLE_GROUP
            refresh: true

          - data-id: nacos-config-base.yaml
            group: SPRING_CLOUD_EXAMPLE_GROUP
            refresh: true

参数解析:

  • data-id : Data Id
  • group:自定义 Data Id 所在的组,不明确配置的话,默认是 DEFAULT_GROUP。
  • refresh: 控制该 Data Id 在配置变更时,是否支持应用中可动态刷新, 感知到最新的配置值。默认是不支持的。

注意:这里的Data ID后面是加.yaml后缀的,且不需要指定file-extension

三、共享配置和扩展配置的区

实际上,Nacos中并未对extension-configsshared-configs的差别进⾏详细阐述。我们从他们的结构,看不出本质差别;除了优先级不同以外,也没有其他差别。那么,Nacos项⽬组为什么要引⼊两个类似的配置呢?我们可以从当初该功能的需求(issue)上找到其原始⽬的。

3.1 Nacos对配置的默认理念
  • namespace区分环境:开发环境、测试环境、预发布环境、⽣产环境。
  • group区分不同应⽤:同⼀个环境内,不同应⽤的配置,通过group来区分。
3.2 主配置是应⽤专有的配置

因此,主配置应当在dataId上要区分,同时最好还要有group的区分,因为group区分应⽤(虽然dataId上区分了,不⽤设置group也能按应⽤单独加载)。

3.3 要在各应⽤之间共享⼀个配置,请使⽤上⾯的 shared-configs

因此按该理念,shared-configs指定的配置,本来应该是不指定group的,也就是应当归⼊DEFAULT_GROUP这个公共分组。

3.4 如果要在特定范围内(⽐如某个应⽤上)覆盖某个共享dataId上的特定属性,请使⽤ extension-config

⽐如,其他应⽤的数据库url,都是⼀个固定的url,使⽤shared-configs.dataId = mysql的共享配置。但其中有⼀个应⽤ddd-demo是特例,需要为该应⽤配置扩展属性来覆盖。

spring:
 application:
   name: ddd-demo-service
 cloud:
   nacos:
     config:
       server-addr: nacos-2.nacos-headless.public.svc.cluster.local:8848
       namespace: ygjpro-test2
       group: ddd-demo
       ......
       shared-configs[3]:
         data-id: mysql.yaml
         refresh: true
       ......
       extension-configs[3]:
         data-id: mysql.yaml
         group: ddd-demo
         refresh: true
3.5 关于优先级

1、上述两类配置都是数组,对同种配置,数组元素对应的下标越⼤,优先级越⾼。也就是排在后⾯的相同配置,将覆盖排在前⾯的同名配置。

  • 同为扩展配置,存在如下优先级关系:extension-configs[3] > extension-configs[2] > extension-configs[1] > extension-configs[0

  • 同为共享配置,存在如下优先级关系:shared-configs[3] > shared-configs[2] > shared-configs[1] > shared-configs[0]

2、不同种类配置之间,优先级按顺序如下:主配置 > 扩展配置(extension-configs) > 共享配置(shared-configs)

标签:group,extension,配置,Nacos,nacos,shared,configs
From: https://www.cnblogs.com/Samuel-Leung/p/17044440.html

相关文章

  • Nacos 源码环境搭建
    最近在学习nacos,通过调式源码查看服务注册和发现流程和原理,本地部署naos源码需要一定的步骤,本文主要做nacos源码部署。nacos版本:2.1.1下载源码从github上下载源码到本......
  • APISIX+Dubbo+Nacos 最佳实践
    作者:杨翊项目简介Apache APISIXApacheAPISIX是Apache软件基金会下的云原生API网关,它具有多平台支持、精细化路由、运维友好和插件支持的优点特点。多平台支......
  • docker搭建nacos集群
    第一步:准备mysql数据库,在mysql数据库执行指定的sql脚本。第二步:拉取镜像#查找镜像sudodockersearchnacos#拉取镜像sudodockersearchnacos/nacos-server:v2.1.1......
  • Flashdevelop解决ANE报Not supported native extensions profile
    ​ 报 Not supported native extensions profile  解决办法: 修改application.xml文件原<​​​​supportedProfiles​​​​>desktopextende......
  • 记录--微信调用jssdk--Invalid Signature, updateAppMessageShareData: denied等问题
    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助最近在做安卓内嵌入H5活动页拉新活动,遇到的棘手问题记录下,一是为了日后遇到同样问题好回顾,二是希望能帮......
  • nacos详解二
    SpringBoot集成Nacos启动配置管理1.添加依赖      <dependency>  <groupId>com.alibaba.boot</groupId>  <artifactId>nacos-config-sp......
  • nacos详解 一
    Nacos是什么❓  欢迎来到Nocos的世界!组成部分全称描述Nanaming/nameServer即服务注册中心,与SpringCloudEureka的功能类似。coconfiguration即配置......
  • Nacos详解
    Nacos是什么❓  欢迎来到Nocos的世界!组成部分全称描述Nanaming/nameServer即服务注册中心,与SpringCloudEureka的功能类似。coconfiguration即配置......
  • Nacos v2.1.2升级到v2.2.0后启动报如下错误
    今天更新了最新的nacos镜像后,发现升级到了v2.2.0版本,是2022年12月14日发布。更新后,Nacos启动出错:1.异常1:Causedby:org.springframework.beans.factory.UnsatisfiedD......
  • DevOps实战系列【第十二章】:详解Shared Libraries共享库
    个人亲自录制全套DevOps系列实战教程:​​手把手教你玩转DevOps全栈技术​​随着jenkinspipeline项目越来越多,冗余代码也越来越多,所以sharelibrary诞生。流水线支持在外部......