(超详细)关于Nacos的共享配置( shared-configs)和拓展配置(extension-config)

news2024/11/18 7:46:50

前言

用SpringBoot的铁子们,相信大多数人都使用过Nacos作为注册中心和配置文件管理中心,确实很方便。但是很多铁子们依葫芦画瓢,都知道怎么用,但是对于其中的细节可能没有系统地整理过。今天就讲讲关于Nacos的共享配置和扩展配置。

配置Demo

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

实际工作开发中,对于模块较多的项目,一般都会使用Redis、Mq、公共数据库连接等信息,同时不同模块可能需要连接特定的数据库和配置信息,如果每个模块都使用自己的配置文件本身是没什么问题,只是一旦改动的话,需要每个配置文件都修改,一是麻烦,更主要的是风险大,比如改错或者漏改,损失的都是白花花的银子。

共享配置和扩展配置共同点

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

-refresh:是动态刷新,在Nacos修改配置后,服务可以动态感知而无需重启项目。

共享配置

允许我们指定⼀个或多个额外配置

扩展配置

允许我们指定⼀个或多个共享配置

修改配置文件级别

将配置文件改成由application改成bootstrap

application.yml作用域在于当前应用有效,bootstrap.yml系统级别的配置有效(一般采用远程配置的时候才会用到)。

因此,将项目中原来的application.yml、application-dev.yml对应改成bootstrap.yml、bootstrap-dev.yml 。(非强制,根据需求来)

配置Demo

spring:
  application:
    name: nacos-config-test
  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-configs和shared-configs的差别进⾏详细阐述。我们从他们的结构,看不出本质差别;除了优先级不同以外,也没有其他差别。那么,Nacos项⽬组为什么要引⼊两个类似的配置呢?我们可以从当初该功能的需求(issue)上找到其原始⽬的。

细节解释

  • namespace

区分环境:开发环境、测试环境、预发布环境、⽣产环境。

  • group

区分不同应⽤:同⼀个环境内,不同应⽤的配置,通过group来区分。

主配置是应⽤专有的配置

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

使用公共配置

如果各应⽤之间共享⼀个配置,请使⽤上⾯的 shared-configs,shared-configs指定的配置,本来应该是不指定group的,也就是应当归⼊DEFAULT_GROUP这个公共分组。

使⽤ extension-config细节

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

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

spring:
 application:
   name: 你的应用名称
 cloud:
   nacos:
     config:
       server-addr: 你的nacos地址
       namespace: ygjpro-test2
       group: xxx-demo
       ......
       shared-configs[3]:
         data-id: mysql.yaml
         refresh: true
       ......
       extension-configs[3]:
         data-id: mysql.yaml
         group: xxx-demo
         refresh: true

配置文件优先级解释

  • 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)

掌握nacos最好的方法

动手整一个Demo,实际上手配置一下,相信操作一遍之后,你可能就理解了。如果仅仅是看这篇文字的话,实际工作用到的时候还是一脸迷茫。千万别懒,动一次手你离大佬的级别就越近一步。

写在最后

好了,今天的分享就到这里。欢迎持续关注"安前码后",一个致力于分享实用干货的号,后续分享最近两年在整的赚钱的号,可以留意消息。哈哈,太穷了,又是个实在人,觉得有点用处的铁子们,给个三连,请收下我的膝盖。
周末快乐!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/604420.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C++11】C++11新增语法 Lambda表达式/Lambda的底层原理

Lambda表达式 1 Lambda使用的一个例子2 Lambda 表达式的语法3 初次体验Lambda表达式4 Lambda函数底层实现原理 1 Lambda使用的一个例子 在C98中&#xff0c;如果我们想要对一个自定义类型进行排序&#xff0c;就需要用户自定义去书写比较的规则。 #include <iostream> …

排序算法——直接插入排序

直接插入排序 基本思想 直接插入排序是一种简单明了的插入排序法&#xff0c;其基本思想是&#xff1a;把待排序的数据按其关键码值的大小逐个插入到一个已经排好序的有序序列中&#xff0c;直到所有数据插入完为止。 在现实生活中&#xff0c;我们玩扑克对牌进行排序就运用了…

开源、易扩展、方便集成的Web绘图工具(流程图、架构图、组态、SCADA、大屏)

乐吾乐2D可视化Meta2d.js是一个基于typescript canvas 实现的开源在线绘图软件。采用引擎 图形库中间件的思路能够方便、快速的扩展、集成到前端项目。 集实时数据展示、动态交互、数据管理等一体的全功能可视化平台。帮助物联网、工业互联网、电力能源、水利工程、智慧农业…

【unity之c#】所以迭代器的原理知识你还清楚吗?

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;uni…

day46-动态规划8-单词拆分问题

139.单词拆分-完全背包问题区分求组合数和排列数 本题可以使用回溯算法进行暴力搜索&#xff0c;但是如何使用动态规划的思路进行求解呢。将字符串可以理解成一个容器&#xff0c;将单词可以当成物品&#xff0c;那么此时问题转化成利用物品能否装满容器的问题。这个时候由于返…

chatgpt赋能python:Python列表框-理解列表框的功能和用途

Python列表框 -理解列表框的功能和用途 列表框可以说是Python编程中最常用的控件之一。列表框用于在桌面应用程序中显示和管理数据。与其他编程语言一样&#xff0c;Python编程语言提供了许多列表框控件&#xff0c;可以使用它们来管理和显示各种数据。 列表框是一种视觉化的…

软件工程导论(5)软件编码测试与维护

一、软件编程 2.1良好的编程习惯 变量命名有意义并且使用统一的命名规则 编写自文档代码&#xff08;序言性注释 or 行内注释&#xff09; 提前进行可维护性考量&#xff08;可以用常量的方式存在的数值最好以变量的方式存在&#xff09; 良好的视觉安排可以提高代码的可读性(…

【服务器】零基础搭建私有云盘并内网穿透远程访问

文章目录 摘要视频教程1. 环境搭建2. 测试局域网访问3. 内网穿透3.1 ubuntu本地安装cpolar3.2 创建隧道3.3 测试公网访问 4 配置固定http公网地址4.1 保留一个二级子域名4.1 配置固定二级子域名4.3 测试访问公网固定二级子域名 转载自cpolar极点云的文章&#xff1a;使用Nextcl…

Hx711称重模块+STM32+CubeMX

文章目录 一、模块和接线二、CubeMX配置1.时钟及sys2.IO口1&#xff09;数据线DT设置为Input2&#xff09;时钟线SCK设置为Output 3.串口4.后续配置 三、程序1.main.c2.hx711.c3.hx711.h4.串口重定向 总结参考文章 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例…

【消息中间件】比较Redis,Kafka和RabbitMQ

对微服务使用异步通信时&#xff0c;通常使用消息代理。代理确保不同微服务之间的通信可靠且稳定&#xff0c;消息在系统内得到管理和监控&#xff0c;并且消息不会丢失。您可以从几个消息代理中进行选择&#xff0c;它们的规模和数据功能各不相同。这篇博文将比较三种最受欢迎…

云服务器CPU内存/带宽配置怎么选择?

云服务器配置怎么选择&#xff1f;个人如何选择&#xff1f;企业怎么选择云服务器配置&#xff1f;腾讯云服务器CPU内存、带宽和系统盘怎么选择合适&#xff1f;个人用户可以选择轻量应用服务器&#xff0c;企业用户可以选择云服务器CVM&#xff0c;企业用户可以选择标准型S5云…

5.1 树和二叉树的定义

博主简介&#xff1a;一个爱打游戏的计算机专业学生博主主页&#xff1a; 夏驰和徐策所属专栏&#xff1a;算法设计与分析 5.1.1 树的定义 我的理解&#xff1a; 在计算机科学中&#xff0c;树是一种非线性数据结构&#xff0c;由节点&#xff08;或称为顶点&#xff09;和边…

ChatGPT国内镜像网站大盘点(国内可用免费GPT-3.5或GPT-4镜像站点)

目录 方法1&#xff1a;使用灵动Ai Chat网页版 方法2&#xff1a;使用AI CHATGPT 公益站 方法3&#xff1a;使用Chat8 方法4&#xff1a;使用https://steamship.com 方法5&#xff1a;使用AI文本工具站 方法6&#xff1a;使用AIDuTu 很多网友想要国内可用免费ChatGPT镜像站…

【AI实战】开源且可商用的 40B 大语言模型 Falcon 40B

【AI实战】开源且可商用的 40B 大语言模型 Falcon 40B Falcon 40B 介绍开源地址Falcon 40B 的测评开源协议 Falcon 40B 介绍 官网 https://www.tii.ae/news/uaes-technology-innovation-institute-launches-open-source-falcon-40b-large-language-model Abu Dhabi-UAE: 25 Ma…

spring cloud搭建(hystrix)

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

安装指定版本docker [centos]

在安装k8s时&#xff0c;对其docker版本有要求&#xff0c;因为在v1.4后对docker不再支持。在安装v1.36版本时&#xff0c;需要提前安装对应版本的docker&#xff0c;这里安装20.10版本 一 先卸载原来安装的docker yum remove docker-ce docker-ce-cli containerd.io 再删除对…

vivado中的Video timing controller IP核参数计算方法

一、参数的计算 直入正题&#xff0c;已知某一1024*600的LCD屏幕&#xff0c;屏幕参数大致如下&#xff1a; 如何设置IP核配置界面的参数呢&#xff1f; 细调参数几乎用不到&#xff0c;我们主要说一下水平设置和垂直设置的8个参数如何配置。取LCD屏幕的典型值作为参考值&#…

自动驾驶之行泊一体

行泊一体技术是一种集成了自动泊车和无人驾驶技术的新型汽车技术,该技术可以使汽车更加智能化和自动化,提高驾驶的安全性和便捷性。从芯片和BEV技术门槛方面来看,我们可以更好地理解这项技术的优势和挑战。 一、芯片限制 实现行泊一体技术需要依靠一些关键的芯片技术,其…

谷歌浏览器Software Reporter Tool长时间占用CPU解决办法

如下图所示&#xff0c;大家是否在使用谷歌浏览器的过程中发现CPU风扇狂转&#xff0c;打开任务管理器发现一个名为software_reporter_tool.exe的软件占用了一半的CPU资源&#xff01;这简直不能忍&#xff0c;按照下面教程&#xff0c;可以解决这个令人苦恼的问题。 什么是Sof…

【LeetCode】693. 交替位二进制数

693. 交替位二进制数&#xff08;简单&#xff09; 方法一 思路 如果一个数的二进制表示总是 0、1 交替出现&#xff0c;那么这个数字可能有两种表示情况&#xff0c;...101010 或 ...010101 &#xff0c;即对应最低位从 0 或 1 开始的两种情况。 因此&#xff0c;我们先确定…