Nacos的配置中心

1.前言


除了注册中心和负载均衡之外, Nacos还是⼀个配置中心, 具备配置管理的功能.

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

        1.1 为什么需要配置中心?

当前项目的配置都在代码中,会存在以下问题:

  1. 配置文件修改时,服务需要重新并部署。微服务架构中可能有成百个实例,挨个部署比较麻烦并且容易出错。
  2. 多个开发时,配置文件可能需要经常修改,使用同一个配置文件容易冲突。

配置中心就是对这些配置项进行统一管理,通过配置中心,可以其中查看,修改和删除配置,无需再逐个修改配置文件,提高效率的同时也降低了出错的风险。

  1. 服务启动时,从配置中心读取配置项的内容,进行初始化。
  2. 配置项修改时,通知微服务,实现配置的更新加载。 

2. 入门程序 

具体可以参考Nacos官网:Nacos Spring Cloud 快速开始

        2.1 添加配置 

在Nacos控制台添加配置项

新建配置项

 配置内容:nacos.test.num = 5

说明:
  1. Data ID 设置为项目名称。
  2. 配置内容的数据格式, 目前只支持 properties yaml 类型。
  3. 设置配置内容。

        2.2 获取配置内容 

1. 引入Nacos Config 配置中心的依赖

<!--        添加nacos配置中心的依赖-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
<!--        spring_cloud 2020以后版本需要引入bootstrap的依赖 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
        </dependency>
  2. 配置bootstrap.properties
微服务启动前,需要先获取Nacos中配置,并与application.yml配置合并, 在微服务运行之前, Nacos要求必须使用bootstrap.properties文件来配置Nacos Server 地址。
我以yml格式进行配置
spring:
  application:
    name: product-service # 设置应用程序的名称
  profiles:
    active: @profiles.name@ # 设置应用启动的环境,注意这里的配置文件会拼接在application.yml文件上面
  cloud:
    nacos:
      config:
        server-addr: 8.130.10.216:8848 # 设置了Nacos配置中心的地址为127.0.0.1:8848
  1. spring.application.name: 这里设置了应用程序的名称为 "product-service"。这个名称通常用于注册服务到服务注册中心或者在日志中标识应用。

  2. profiles.active: 这是设置应用启动的环境。@profiles.name@ 是一个占位符,它会被实际的配置文件名所替换。比如如果激活了名为 "dev" 的配置文件,那么实际的配置文件名就会变成 "application-dev.yml"。

  3. cloud.nacos.config.server-addr: 这里配置了 Nacos 配置中心的地址为 "8.130.10.216:8848"。Nacos 是一个开源的分布式配置中心,这里指定了应用从该配置中心获取配置信息。

注意 配置中心和服务中心的环境是隔离的:

Nacos 配置中心:

  • spring: cloud: nacos: config: server-addr

Nacos 服务中心:

  • spring: cloud: nacos: discovery: server-addr
/**
 * @Description: 用于读取nacos中的配置项
 * @Author: windStop
 * @Date: 2024/6/3 16:40
 */
@RestController
@RefreshScope
public class NacosController {

    @Value("${nacos.test.num}")
    private String nacosConfig;

    @RequestMapping("/getConfig")
    public String getConfig(){
        return "从Nacos中获取到了配置项" + nacosConfig;
    }
}

需要在启动类添加@RefreshScope 配置进行热更新

当配置中心中的配置信息发生变化时,通过@RefreshScope标记的Bean可以在不重启应用的情况下实现热更新。

3. 配置中心详解

       3.2 设置命名空间

Nacos的服务中心和配置中心的命名空间是分别设置的,不属于同一配置。默认是public。

Nacos配置中心的命名空间在bootstrap.properties中进行配置的。

spring:
  application:
    name: product-service # 设置应用程序的名称
  profiles:
    active: @profiles.name@ # 设置应用启动的环境,注意这里的配置文件会拼接在application.yml文件上面
  cloud:
    nacos:
      config:
        server-addr: 8.130.10.216:8848 # 设置了Nacos配置中心的地址为127.0.0.1:8848
        namespace: 6beb0a84-3626-47a9-9d2e-56970d22c68e # 设置配置中心的命名空间

 

        3.3 Data-ID(配置项) 

  Data Id 格式介绍
在 Nacos Spring Cloud 中, dataId 的完整格式如下:
${prefix}-${spring.profiles.active}.${file-extension}
  • Prefix 设置:

    • 默认情况下,prefix 是根据 spring.application.name 的值确定的。
    • 你也可以通过配置项 spring.cloud.nacos.config.prefix 来自定义 prefix。
  • Profile 设置:

    • spring.profiles.active 表示当前环境对应的 profile。
    • 如果 spring.profiles.active 为空,连接符 - 也将不存在。
    • dataId 的拼接格式为 ${prefix}.${file-extension},其中 file-extension 表示配置内容的数据格式。
    • 可以通过配置项 spring.cloud.nacos.config.file-extension 来指定 file-extension,目前只支持 properties 和 yaml 类型,默认为 properties
  • 配置文件加载顺序:

    1. ${prefix}-${spring.profiles.active}.${file-extension},例如:product-service-dev.properties
    2. ${prefix}.${file-extension},例如:product-service.properties
    3. ${prefix},例如:product-service
  • 注意事项:

    • ${spring.application.name}${spring.profiles.active} 等配置必须放在 bootstrap.properties 文件中指定。
三个文件的优先级为: product-service-dev.properties > product-service.properties > product-service

 

4. Nacos配置中心总结

Nacos作为一个功能强大的服务发现和配置管理平台,不仅提供了注册中心和负载均衡的功能,还充当了配置中心的角色。在使用Nacos配置中心时,我们可以通过以下步骤轻松管理项目的配置项:

1. 配置中心的必要性

  • 传统的配置文件管理方式存在诸多问题,如需重新部署服务、配置冲突等。
  • 配置中心能够统一管理配置项,提高效率,降低出错风险。

2. 入门程序

  • 添加配置项到Nacos控制台,并通过依赖引入和配置文件配置,实现配置的读取和初始化。

3. 配置中心详解

  • 命名空间设置: 可以通过命名空间进行不同环境的配置隔离,如开发测试环境和生产环境。
  • Data-ID格式: Data-ID的格式包括prefix、profile、file-extension等,可根据项目需求进行自定义设置。

通过以上步骤,我们可以轻松地实现配置的管理和更新,提高了系统的灵活性和可维护性。

总的来说,Nacos配置中心为微服务架构下的配置管理提供了便利,使得配置项的管理变得更加简单和高效。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

网络基础-IP协议

文章目录 前言一、IP报文二、IP报文分片重组IP分片IP分片示例MTUping 命令可以验证MTU大小Windows系统&#xff1a;Linux系统: 前言 基础不牢&#xff0c;地动山摇&#xff0c;本节我们详细介绍IP协议的内容。 一、IP报文 第一行&#xff1a; 4位版本号指定IP协议的版本&#…

原来你长这个样子啊,Java字节码文件

字节码文件 字节码文件是一种二进制文件&#xff0c;扩展名为.class 通过 javac 将源码编译得到&#xff0c;是一种中间形式的代码&#xff0c;这种中间形式的代码让Java有了“一次编译&#xff0c;多次运行”的跨平台特点。 字节码文件的组成 由5大组成部分&#xff1a;基础…

9.3 Go 接口的多态性

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

Python第二语言(六、Python异常)

目录 1. 捕获异常&#xff08;try: except: else: finally:&#xff09; 1.1 概念 1.2 基础语法&#xff08;try&#xff1a; except&#xff1a;&#xff09; 1.3 捕获异常&#xff08;异常也有类型&#xff09; 1.4 捕获多个异常&#xff08;try&#xff1a;except(Name…

UI学习的案例——照片墙

照片墙案例 在实现照片墙案例之前先讲一下userInteractionEnable这个属性。 首先这个属性属于UIView&#xff0c;这个属性是bool类型&#xff0c;如果为YES的话&#xff0c;这个UIView会接受有关touch和keyboard的相关操作&#xff0c;然后UIView就可以通过相应的一些方法来处…

C语言详解(联合和枚举)

Hi~&#xff01;这里是奋斗的小羊&#xff0c;很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~~ &#x1f4a5;个人主页&#xff1a;奋斗的小羊 &#x1f4a5;所属专栏&#xff1a;C语言 &#x1f680;本系列文章为个人学习笔记&#xff0c;在这里撰写…

多粒度特征融合(细粒度图像分类)

多粒度特征融合&#xff08;细粒度图像分类&#xff09; 摘要Abstract1. 多粒度特征融合1.1 文献摘要1.2 研究背景1.3 创新点1.4 模型方法1.4.1 Swin-Transformer1.4.2 多粒度特征融合模块1.4.3 自注意力1.4.4 通道注意力1.4.5 图卷积网络1.4.6 基于Vision-Transformer的两阶段…

SpringBoot集成缓存功能

1. 缓存规范 Java Caching定义了五个核心接口&#xff0c;分别是&#xff1a;CachingProvider、CacheManager、Cache、Entry和Expiry。 CachingProvider&#xff1a;定义了创建、配置、获取、管理和控制多个CacheManager。一个应用可以在运行期访问多个CachingProvider。CacheM…

玉米粒计数检测数据集VOC+YOLO格式107张1类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;107 标注数量(xml文件个数)&#xff1a;107 标注数量(txt文件个数)&#xff1a;107 标注类别…

预备知识----技术架构演进之路

单机架构 简介&#xff1a;应用服务和数据库服务共用一台服务器。 出现原因&#xff1a;出现在互联网早期&#xff0c;访问量较小&#xff0c;单机足以满足需求。 架构工作原理&#xff1a;通过应用&#xff08;划分了多个模块&#xff09;和数据库在单个服务器上写作完成业务…

进阶篇01——存储引擎

MySQL体系结构 存储引擎 引擎有多种类型&#xff0c;MySQL支持多种存储引擎&#xff0c;默认的存储引擎为innodb。不同的存储引擎有不同的特点&#xff0c;适用不同的场景。 innodb存储引擎 简介 innodb的逻辑存储结构 MYISAM存储引擎 memory存储引擎 三种引擎特点对比&…

《python程序语言设计》2018版第5章第48题以0,0为圆心 绘制10个左右的同心圆

在0&#xff0c;0点处绘制10个圆。 其实这个题先要记住python不会0&#xff0c;0为原点进行绘画。 它是按半径来画&#xff0c;所以我们要先把turtle这个小画笔送到它应该去的起点。&#xff08;我经常有这样的错觉&#xff0c;每次都是这样想办法把自己拉回来&#xff09; 我…

【目标跟踪网络训练 Market-1501 数据集】DeepSort 训练自己的跟踪网络模型

前言 Deepsort之所以可以大量避免IDSwitch&#xff0c;是因为Deepsort算法中特征提取网络可以将目标检测框中的特征提取出来并保存&#xff0c;在目标被遮挡后又从新出现后&#xff0c;利用前后的特征对比可以将遮挡的后又出现的目标和遮挡之前的追踪的目标重新找到&#xff0…

STM32 proteus + STM32Cubemx仿真教程(第二课按键教程)

文章目录 前言一、STM32按键的原理二、STM32Cubemx创建工程三、proteus仿真电路图四、程序代码编写4.1函数介绍4.2使用按键点亮LED灯 总结 前言 本篇文章开始带大家学习如何使用proteus和STM32Cubemx来完成STM32的学习&#xff0c;第二节课我们先来学习按键的用法。 proteus使…

景区ar互动大屏游戏化体验提升营销力度

从20世纪60年代的初步构想&#xff0c;到如今全球范围内无数企业的竞相投入&#xff0c;AR增强现实技术已成为引领科技潮流的重要力量。而在这一浪潮中&#xff0c;中国的AR公司正以其独特的魅力和创新力&#xff0c;崭露头角。 中国的AR市场正在迎来前所未有的发展机遇。如今&…

qmt量化交易策略小白学习笔记第16期【qmt编程之获取北向南向资金(沪港通,深港通和港股通)】

qmt编程之获取北向南向资金 qmt更加详细的教程方法&#xff0c;会持续慢慢梳理。 也可找寻博主的历史文章&#xff0c;搜索关键词查看解决方案 &#xff01; 北向南向资金&#xff08;沪港通&#xff0c;深港通和港股通&#xff09; #北向南向资金交易日历 获取交易日列表…

UltraEditUEStudio软件最新版下载及详细安装教程

UEStudio简介&#xff1a; UEStudio建立在上文本编辑器UltraEdit的功能基础上&#xff0c;并为团队和开发人员提供了其他功能&#xff0c;例如深度Git集成。您可以直接在UEStudio中克隆&#xff0c;签出&#xff0c;更新&#xff0c;提交&#xff0c;推入/拉入等操作&#xff…

SpringBoot整合钉钉实现消息推送

前言 钉钉作为一款企业级通讯工具&#xff0c;具有广泛的应用场景&#xff0c;包括但不限于团队协作、任务提醒、工作汇报等。 通过Spring Boot应用程序整合钉钉实现消息推送&#xff0c;我们可以实现以下功能&#xff1a; 实时向指定用户或群组发送消息通知。自定义消息内容…

知识图谱的应用---智慧交通

文章目录 智慧交通典型应用 智慧交通 现代城市发展过程中的一大问题是交通拥堵&#xff0c;为解决城市发展中的这一顽疾&#xff0c;有必要以现代化高科技技术为支撑&#xff0c;建造城市中的智慧交通系统&#xff0c;从源头入手缓解城市拥挤问题。当前&#xff0c;“智慧交通”…

如何获取当前dll或exe模块所在路径?

有时我们需要在当前运行的dll或exe模块中去动态加载当前模块同路径中的另一个库&#xff0c;或者启动当前模块同路径中的另一个exe程序&#xff0c;一般需要获取当前模块的路径&#xff0c;然后去构造同路径下目标模块的绝对路径&#xff0c;然后通过该绝对路径去加载或启动该目…