一、Nacos 配置中心核心属性

       在学习nacos 作为配置中心的使用之前,先看下Nacos 作为配置中心时的三个属性,即:

       命名空间、配置分组、配置集ID(习惯称为配置文件ID);在使用Nacos 作为配置中心

       的过程中可以通过这3个属性对配置文件进行隔离。

       在项目中通常通过 命名空间、配置分组和 Data ID 来唯一确定要使用的配置文件。

1、命名空间(Namespace )

      用于进行租户粒度的配置隔离。不同的命名空间下,可以存在相同的 Group 或 Data ID 的

      配置文件。Namespace 的常用场景之一是不同环境的配置的区分隔离,例如开发测试环境

      和生产环境的资源(如配置、服务)隔离等。

2、配置分组(Group)

     Nacos 中的一组配置集,是组织配置的维度之一。通过一个有意义的字符串(如 Buy 或 Trade

     )对配置集进行分组,从而区分 Data ID 相同的配置集。当您在 Nacos 上创建一个配置时,

     如果未填写配置分组的名称,则配置分组的名称默认采用 DEFAULT_GROUP 。配置分组的常

     见场景:不同的应用或组件使用了相同的配置类型,如 database_url 配置和 MQ_topic 配置。

3、配置集ID(Data ID)

     Nacos 中的某个配置集的 ID。配置集 ID 是组织划分配置的维度之一。

     Data ID 通常用于组织划分系统的配置集。一个系统或者应用可以包含多个配置集,每个配置集

     都可以被一个有意义的名称标识。     

     配置集:一组相关或者不相关的配置项的集合称为配置集。在系统中,一个配置文件通常就是

     一个配置集,包含了系统各个方面的配置。例如,一个配置集可能包含了数据源、线程池、

     日志级别等配置项。

     Data ID 通常采用类 Java 包(如 com.taobao.tc.refund.log.level)的命名规则保证全局

     唯一性。 此命名规则非强制。在实际工作中 Data ID 的命名一般遵守下面的格式:

            ${prefix}-${spring.profiles.active}.${file-extension}

     解释:

          prefix:Nacos配置文件的前缀,默认是 “spring.application.name” 的值,也可以通过

                      nacos配置项 “spring.cloud.nacos.config.prefix” 来配置

          spring.profiles.active:即为当前环境对应的 profile,

                      注意:当 “spring.profiles.active” 为空时,对应的连接符 “-” 也将不存在,

                                 dataId 的拼接格式变成 “${prefix}.${file-extension}”

          file-exetension:为配置文件的格式,可以通过配置项

                                    “spring.cloud.nacos.config.file-extension” 来配置。

                                     目前只支持 “properties” 和 “yaml” 类型。

4、Namespace、Group 和 Data ID 三者之间的关系?

     Namespace、Group 和 Data ID 这三者之间类似于Java里面的package名和类名,最外层的

     Namespace是可以用于区分部署环境的,Group和DataID逻辑上区分两个目标对象;

     如下图所示:

            

     Nacos默认的命名空间是public,我们就可以利用Namespace来实现隔离,比如我们现在有三

     个环境:开发、测试、生产环境,我们就可以创建三个Namespace,不同的Namespace之

     间是隔离的。

     Group本身就是分组的意思,它可以把不同的微服务划分到同一个分组里面去。Group 默认

     是 DEFAULT_GROUP

     剩下的就是具体微服务,一个Service可以包含多个Cluster,Nacos默认Cluster是DEFAULT,

     Cluster是对指定微服务的一个虚拟划分。比如说,将一个Service部署在北京和和上海的机房

     中,北京机房的Service就可以起名为(BJ),杭州机房中的Service就可以起名为(SH),

      这样就可以尽量让同一个机房的微服务互相调用,提升性能。

     通过 Namespace、Group 和 Data ID 可以实现配置文件的隔离和动态切换

二、Nacos 作为配置中心使用步骤

1、引入 Nacos Config 依赖,

2、在项目的配置文件中配置Nacos 配置中心地址、配置文件类型以及“spring.profiles.active”,

     “spring.profiles.active” 是为了后边Data ID 的取值。

      注意:在springBoot 项目中我们常用的配置文件是application.yml,但配置文件application的

                 优先级比较低;但项目启动初始化时就需要拉取配置,若将nacos 配置中心信息配置在

                 application中,此时可能会出现application还没开始执行配置获取不到而导致项目启动

                 报错,所以我们需要把Nacos 配置中心信息配置到比application优先级更高的配置文件

                 bootstrap.yml;

                 nacos 作为配置中心时一般需要2个配置文件,即:bootstrap.yml、 application.yml;

                 bootstrap.yml 用于去Nacos中读取指定后缀为yaml的配置文件,application.yml 用于

                 配置其他信息,如配置:spring.profiles.active

      配置内容如下:

server:port: 3377
#配置文件的加载的优先级 boootstrap.yml 高于 application,
#项目需要先拉取配置才能正常启动,所以 nacos 作为配置中心的配置最好放在 boootstrap 文件中
spring:application:name: nacos-config-clientcloud:#配置nacosnacos:#配置 “nacos配置中心”config:server-addr: 47.117.80.49:8848file-extension: yaml #指定拉取的配置文件的后缀

          

          

4、在Nacos 平台创建配置文件

     在浏览器访问 http://localhost:8848/nacos 进入Nacos 平台,进入“配置管理—>配置列表”

     页面来创建配置文件,如下图所示:

           

     通过上边介绍Data ID 命名规则 与 当前项目中的配置项 “spring.application.name

  (nacos-config-client)”、 “spring.profiles.active(dev)” 、“file-extension” 可以推导

    出当前配置文件的Data ID 应该是 “nacos-config-client-dev.yaml”,推到过程如下图所示:

           

    新建配置文件时,分组Group 默认是 “DEFAULT_GROUP”,但分组Group的值是可以修改的,

    可以根据自己的要求来求改Group的值,不同的Group下允许Data ID 相同的配置文件;

    配置内容如下:

           

5、测试,验证Nacos 中的配置文件是否生效

      创建测试类 ConfigController,通过spring 原生注解 @Value 将nacos 配置文件中的配置项

      映射到属性 configInfo 上。

      注意:注解 @Value 不支持配置的动态刷新,但可以通过 @RefreshScope+@Value 的方式

                 来实现配置的动态刷新;

                 在高版本的spring cloud alibaba nacos config 中,nacos 原生注解 @NacosValue (动

                 态获取配置nacos配置文件值,支持动态刷新)不生效,官方支持使用spring cloud 原生

                 注解 @Value+@RefreshScope 的方式实现配置的动态刷新

     测试代码如下:

/***************************************************** 在通过主机@Value 把配置文件的配置项与类中的属性绑定时,可以通过注解 @RefreshScope 实现配置的动态* 刷新** @author * @date 2025/6/16 15:06****************************************************/
@RefreshScope
@RestController
public class ConfigController {@Value("${config.info}")private String configInfo;/*** todo 注意:*    在高版本的spring cloud alibaba nacos config 中,nacos 原生注解 @NacosValue (动态获取配置nacos配置文件值,支持动态刷新)*    不生效,官方支持使用spring cloud 原生注解 @Value+@RefreshScope 的方式实现配置的动态刷新*///@NacosValue(value = "${config.info}",autoRefreshed = true)private String config;@GetMapping("/config/info")public String test(){System.out.println(" config = "+config);System.out.println(" configInfo = "+configInfo);return this.configInfo;}
}

     测试结果:

          在浏览器访问 “http://localhost:3377/config/info” ,页面成功打印

          “nacos-config-client-dev.yaml” 中的配置项,如下图所示:

               

三、通过 Namespace、Group 和 Data ID 实现Nacos 配置文件的动态切换

1、通过Data ID 动态切换配置文件

      根据前边 Data ID 的命名规则我们知道,在该方案中一般是修改 “spring.profiles.active” 的

      值来动态切换不同环境的配置文件

      步骤:

              1)在 public 命名空间下新增配置文件 “nacos-config-client-test.yaml”,并设置该配置文

                   件的分组与 配置文件 “nacos-config-client-dev.yaml” 相同,即都是

                   “DEFAULT_GROUP”,如下所示:

                          

                         

                         

              2)配置文件application.yml 中的配置项 “spring.profiles.active” 配置内容如下图所示:

                         

                         nacos config 配置内容如下:

                         

              3)测试

                   通过修改配置文件application.yml 中的配置项 “spring.profiles.active” 来动态读取不同

                   环境的配置文件,

                   2次访问 “http://localhost:3377/config/info ”  测试结果如下所示如下图所示:

                    (1)dev 开发环境

                             

                    (2)test 测试环境

                             

                              

2、通过 Group 动态切换配置文件

     根据之前的讲解我们都知道Group为分组默认是:DEFAULT_GROUP,所以现在我们就需要

     分出两组,一组是“DEFAULT_GROUP”,一组是“DEFAULT_INFO”

     而且根据前边的了解我们知道,Group分组只能在创建配置文件时指定。

     步骤:

           1)新创建 Data ID 为 “nacos-config-client-dev.yaml” 的配置文件,并指定该文件的所属

                分组是 “DEFAULT_INFO”,如下图所示:

                      

                这样在Nacos 配置列表中就存在2个DataID同为 “nacos-config-client-dev.yaml” 但分组

                不一样的配置文件,如下图所示:

                       

               

           2)在配置文件 bootstrap.yml 中的 Nacos 配置中心的配置中增加配置项 “group”,

                 group 表示读取那个分组下的配置文件,group 若不配置则默认读取 分组

                 “DEFAULT_GROUP” 中的配置文件,配置内容如下:

                        

                         

           3)测试

                 通过修改 配置文件 bootstrap.yml 中配置项 "group" 的值来观察访问

                 “http://localhost:3377/config/info ”  的输出情况,测试结果如下:

                (1)DEFAULT_GROUP 分组测试结果:

                          

                (2)DEFAULT_INFO 分组测试结果

                         

     

3、通过 Namespace 动态切换配置文件

      在Nacos 管理平台,进入“命名空间”页面,发现此时已经存在一个名称为“public”的命名空间;

      public 是Nacos 默认的命名空间,不可编辑和删除(自己创建的命名空间可以编辑和删除);

      如下图所示:

              

      验证 “通过 Namespace 动态切换配置文件” 则需要至少2个命名空间,所以我们还需要先新建

      一个命名空间

      步骤:

          1)新创建命名空间

                在命名空间页面,点击按钮“新建命名空间” 来创建命名空间,如下图所示:

                        

                        

          2)在新加的命名空间 “DEV”中新增配置文件 “nacos-config-client-dev.yaml”,并设置分组

                Group 与 命名空间public 下的同 Data ID 的配置文件的分组一致,

               即分组Group=DEFAULT_GROUP,如下图所示:

                      

                       

          3)修改nacos 配置中心配置

                在配置文件 bootstrap.yml 中的 Nacos 配置中心的配置中增加配置项 “namespace”,

                namespace 指定配置文件所在的命名空间,若不配置,默认是Ncos 保留的命名

                空间 public;在Nacos 中通过${namespace}.${group}.${dataId}.${文件格式}来唯一

                确定配置文件,配置内容如下:

                        

                       

                      bootstrap.yml 中 的配置内容如下:          

server:port: 3377
#配置文件的加载的优先级 boootstrap.yml 高于 application,
#项目需要先拉取配置才能正常启动,所以 nacos 作为配置中心的配置最好放在 boootstrap 文件中
spring:application:name: nacos-config-clientcloud:#配置nacosnacos:#配置 “nacos配置中心”config:server-addr: 47.117.80.49:8848file-extension: yaml #指定拉取的配置文件的后缀#指定配置文件的分组,若不配置默认是 DEFAULT_GROUP#不同的分组可以存在DataId 相同的配置文件group: DEFAULT_GROUP#group: DEFAULT_INFO#指定配置文件所在的命名空间,若不配置,默认是Ncos 保留的命名空间 public#${namespace}.${group}.${dataId}.${文件格式}来唯一确定配置文件namespace: 01edc802-425e-4c4e-828e-a28d079051ad#配置nacos 服务注册中心discovery:server-addr: 47.117.80.49:8848

          4)测试

                通过修改 配置文件 bootstrap.yml 中配置项 "namespace" 的值来观察访问

                 “http://localhost:3377/config/info ”  的输出情况,测试结果如下:

                 (1)默认命名空间public 测试结果

                          

                 (2)命名空间DEV 测试结果

                          

               

               

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot 插件化架构的4种实现方案

在复杂业务场景下,传统的单体应用架构往往面临着功能扩展困难、代码耦合严重、迭代效率低下等问题。 插件化架构作为一种模块化设计思想的延伸,能够使系统具备更好的扩展性和灵活性,实现"热插拔"式的功能扩展。 本文将介绍Spring…

VGG-19(Visual Geometry Group)模型

VGG-19 是由牛津大学视觉几何组和 Google DeepMind 的研究人员在 2014 年提出的一个非常经典的深度卷积神经网络模型。 一 核心结构 (1)深度: 模型名称中的 "19" 指的是模型拥有 19 层带有权重的层(通常指:…

Windows11 鼠标卡死任务栏卡死 假死解决方法

最近很多朋友都有一个问题,就是Windows11电脑 在编辑文档或者是切换窗口的时候出现任务栏假死,鼠标左右键失灵等现象,想了几天解决方案今天吧最直接的方法教给大家 首发玖毅论坛 玖毅论坛https://www.webbbs.cn/ 第一步: 第一种…

BeikeShop - 一个开源、用户友好的跨境电子商务平台

BeikeShop - 一个开源、用户友好的跨境电子商务平台 BeikeShop 是全球领先的基于 Laravel 框架的开源电子商务平台,专为国际贸易和跨境电子商务行业设计。 该系统是 100% 开源的!它支持多语言、多币种、支付、物流、会员管理等广泛的实用功能&#xff0…

基于大模型的胆囊结石全周期诊疗方案研究报告

目录 一、引言 1.1 研究背景与意义 1.2 研究目的与目标 1.3 研究方法与创新点 二、大模型预测胆囊结石的原理与技术基础 2.1 大模型概述 2.2 用于胆囊结石预测的数据来源 2.3 模型构建与训练 2.4 模型评估指标 三、术前风险预测与手术方案制定 3.1 术前评估指标与数…

[论文阅读] 人工智能 | Gen-n-Val:利用代理技术革新计算机视觉数据生成

Gen-n-Val:利用代理技术革新计算机视觉数据生成 论文信息 article{huang2025gennval,title{Gen-n-Val: Agentic Image Data Generation and Validation},author{Huang, Jing-En and Fang, I-Sheng and Huang, Tzuhsuan and Wang, Chih-Yu and Chen, Jun-Cheng},jo…

【AI论文】ReasonMed:一个370K的多智能体生成数据集,用于推进医疗推理

摘要:尽管基于推理的大型语言模型(LLM)在数学和编程方面表现出色,但它们在知识密集型医疗问题回答方面的能力仍未得到充分探索。为解决这一问题,我们推出了ReasonMed,这是最大的医疗推理数据集,…

singlefligt使用方法和源码解读

singlefligt使用方法和源码解读 介绍 sync.once保证其整个生命周期内只调用一次;而singleflight则可以保证在一定范围内其只调用一次。 背景|使用场景 应对缓存击穿:加锁可以解决这个问题,但是加锁不太灵活(不能控制访问频率之…

HTTP 协议的基本概念(请求/响应流程、状态码、Header、方法)问题解决方案大全

HTTP 协议的基本概念(请求/响应流程、状态码、Header、方法)问题解决方案大全 一. 摘要 HTTP 协议是 Web 开发的基石,但初学者往往只停留在 GET、POST 的层面,对重定向机制、缓存控制、请求体解析等概念缺乏深入理解,…

Python中常用的函数

以下是Python中常用的函数分类整理,涵盖基础操作、数据处理、文件操作、面向对象等场景,并附上示例说明: --- ### **一、基础内置函数** | 函数 | 作用 | 示例 | |----…

【Windows】删除鼠标右键多余菜单的方法

要删除鼠标右键菜单中的多余菜单,如:“打开抖音壁纸”选项,通常需要通过修改注册表或使用第三方工具来清理残留的注册表项。以下是详细步骤(操作注册表前务必备份!): 方法一:通过注册…

【性能优化】启用zram

性能优化 系统内存不足时,可以考虑启动ZRAM功能(压缩内存)。关于ZRAM的概念,可自行学习。这里记录一下,启用ZRAM的方式。 启用ZRAM,可能会导致CPU升高,以及低内存时的恶性循环。是否启用需要综…

深度解析YOLOv8:CSPHet卷积结构如何实现极致轻量化

文章目录 一、背景介绍1.1 YOLOv8的现状1.2 降参数的必要性 二、相关技术介绍2.1 Dual思想2.2 HetConv 三、CSPHet结构设计3.1 CSP模块的改进3.2 结合HetConv3.3 参数量的下降 四、CSPHet的代码实现五、实验结果六、总结与展望 在目标检测领域,YOLO系列算法一直以其…

适配器模式demo

#include <QCoreApplication> #include <iostream>using namespace std;class XmCom { public:void ComByXm(){cout << "XM电源适配器只适用于小米笔记本电脑" << endl;} };class LxCom { public:virtual void ComByLx() 0;virtual ~LxCom…

数据处理考核要求-SQL测试的答案

在一个团队中&#xff0c;有业务人员。如业务人员深入理解数据处理的内容&#xff0c;会大幅度增强相互配合的效率。 针对业务人员进行针对性培训&#xff0c;还是比较容易掌握SQL的数据处理。类似与大学里面开的一门选修课。数据集选择帆软的Demo数据集。 业务人员学会SQL的…

第十七届全国大学生数学竞赛(数学类)初赛模拟试题

上周组委会发布了第十七届全国大学生数学竞赛通知&#xff0c;初赛暂定于2025年11月8日(星期六)上午9:00-11:30举行&#xff0c;同时今年新增了个亮点&#xff0c;针对与数学类的同学&#xff0c;即&#xff1a; 为提升全国大学生数学竞赛的含金量和公平性&#xff0c;并进一步…

解决: React Native iOS webview 空白页

iOS react-native-webview 之前是正常的, 升级了 react-native / react-native-webview 等 之后, 就变成了空白页. 通过下面的修改, 可以修复, 回到正常的状态. 来源: https://github.com/react-native-webview/react-native-webview/issues/3697 diff --git a/node_modules/…

VMware安装Ubuntu并实现root远程登录

前置信息 垃圾Ubuntu系统默认ssh、vim都没有&#xff01;&#xff01;&#xff01; 已踩坑cnmUbuntu处于sb安全机制要求&#xff0c;默认是禁用root直接登录的 1、修改root密码 sudo -sH &#xff08;可以让一个具有sudo权限的普通用户进入 root&#xff09; 然后就是pas…

量化面试绿皮书:20. 正态生成

文中内容仅限技术学习与代码实践参考&#xff0c;市场存在不确定性&#xff0c;技术分析需谨慎验证&#xff0c;不构成任何投资建议。 20. 正态生成 Q: 如何生成两个标准正态分布&#xff08;N(0,1)&#xff09;的随机变量&#xff0c;使它们之间的相关系数为p&#xff0c;假设…

Arduino入门教程:10、屏幕显示

飞书文档https://x509p6c8to.feishu.cn/docx/N45Pd0tA1oaC4CxUWZjc8Ekyn0b 屏幕应用场景 课程使用的SSD1306是一款128*64像素可以使用IIC驱动的OLED屏幕。 SSD1306 Oled显示模块共有4个引脚&#xff0c;标记为GND, VCC, SCL和SDA。这种Oled显示模块可以使用3.3V到5V轻松上电。…