前言:Nacos 是什么?

Nacos(Naming and Configuration Service)是阿里巴巴开源的一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。我们可以使用它:

  • ✅作为注册中心(服务发现)

  • ✅作为配置中心(集中化配置管理)

本篇重点讲 Nacos 作为配置中心 的使用。

一、什么是 Nacos 配置中心?🧠

Nacos(Dynamic Naming and Configuration Service) 是阿里开源的服务注册与配置管理中心。
作为配置中心,Nacos 提供了:

✅ 配置中心的核心作用:

传统配置文件(本地)Nacos(集中式配置)
配置分散、手动部署配置集中、统一管理
修改后需重启服务支持热更新
无法区分环境/服务支持命名空间分组
不利于运维、灰度更适合动态配置、灰度发布

✅ 使用 Nacos 的优势:

  • 📦 集中管理:所有微服务的配置集中托管在 Nacos 中。

  • 🔄 动态刷新:配置修改后可动态生效,无需重启服务。

  • 🌍 环境隔离:通过命名空间划分 dev/test/prod 等环境。

  • 🧩 扩展灵活:支持配置共享、多文件加载、灰度发布等。


二、Nacos 配置中心使用流程 🚀

以下以 Spring Boot + Spring Cloud Alibaba 项目为例,详细介绍从依赖引入到动态刷新配置。


三、Nacos 配置使用详解 🛠️


1️⃣ 引入依赖(Maven)

<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId><version>0.2.2.RELEASE</version> <!-- 请根据 Spring Cloud 版本选择 -->
</dependency>

若你同时使用注册中心:

<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId><version>0.2.2.RELEASE</version> <!-- 请根据 Spring Cloud 版本选择 -->
</dependency>

2️⃣ 编写 bootstrap.yml(必须)

🚨 必须用 bootstrap.yml,因为 Spring 会在加载 application.yml 之前读取它,才能初始化 Nacos 配置。

spring:application:
//spring.application.name 是应用名,spring.cloud.nacos.config.name 是配置文件的前缀。
//Nacos 默认会用 application.name 来当 config.name,除非你手动写了config.namename: nacos-config-demo  # 会作为 dataId 的前缀profiles:active: dev  # 表示读取 nacos-config-demo-dev.yamlcloud:nacos:config:server-addr: 127.0.0.1:8848file-extension: yaml  # 支持 yaml/propertiesnamespace: public  # 或使用 UUID(非默认空间)group: DEFAULT_GROUPrefresh-enabled: true

✅ 最终读取的配置文件 dataId 是:
nacos-config-demo-dev.yaml


3️⃣ Nacos 控制台添加配置 ✍️

进入 http://localhost:8848:

  • Data ID: nacos-config-demo-dev.yaml

  • Group: DEFAULT_GROUP

  • 配置格式: YAML

  • 配置内容示例:

user:name: Aliceage: 30

4️⃣ 编写配置绑定类(推荐方式)

@Configuration
@ConfigurationProperties(prefix = "user") // 自动绑定配置
public class UserConfig {private String name;private Integer age;// Getter & Setter
}
⚙️ 开启配置绑定支持(可省略)
@SpringBootApplication
@EnableConfigurationProperties
public class MyApp {public static void main(String[] args) {SpringApplication.run(MyApp.class, args);}
}

5️⃣ 控制器中使用配置 + 动态刷新

若希望修改配置后立即生效,需添加 @RefreshScope 注解。

@RefreshScope 背后做了啥

@RestController
@RefreshScope
public class UserController {@Autowiredprivate UserConfig userConfig;@GetMapping("/user")public String getUser() {return userConfig.getName() + " - " + userConfig.getAge();}
}

四、拓展配置项(多个配置文件)

spring:cloud:nacos:config:extension-configs:- data-id: db-config.yamlgroup: DEFAULT_GROUPrefresh: true- data-id: common.yamlgroup: DEFAULT_GROUPrefresh: true
  • 默认主配置是:nacos-config-demo-dev.yaml

  • 可以引入多个扩展配置

  • 支持刷新(refresh: true


五、命名空间的使用(多环境隔离)

可在 Nacos 控制台创建多个 namespace 来区分环境:

环境Namespace ID说明
开发环境dev-id开发使用
测试环境test-id测试使用
生产环境prod-id正式使用

配置方式:

spring:cloud:nacos:config:namespace: dev-id

六、配置优先级(从高到低)

  1. nacos-config-demo-dev.yaml(主配置)

  2. extension-configs 中的多个配置

  3. shared-configs(共享配置,可用于多个服务通用)


七、常见问题与排查 🔍

问题可能原因解决方式
配置读不到文件名或 profile 错确认 dataId 命名是否正确
无法动态刷新缺少 @RefreshScope加在 Controller 或 Config 类上
只使用 @Value 失败@Value 不支持批量刷新@ConfigurationProperties
不生效写在 application.yml 中了必须写在 bootstrap.yml


八、项目结构示例 🧱

src
├── main
│   ├── java
│   │   └── com.example.demo
│   │       ├── config/UserConfig.java
│   │       └── controller/UserController.java
│   └── resources
│       ├── bootstrap.yml  ✅ 必须
│       └── application.yml

九、结语 🧩

Nacos 配置中心是微服务配置管理的利器:

  • 初学阶段建议:单环境单配置文件 先跑通再拓展

  • 熟悉后可用:多命名空间 + 多配置文件 + 动态刷新 + 加密配置

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

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

相关文章

家庭/公司内部网络内网穿透:无公网IP怎么设置外网远程访问?

家庭宽带内网穿透如何实现&#xff1f;需公网IP吗&#xff1f;公司内部的网址服务怎么提供互联网访问&#xff1f;相信很多人都有遇到家庭网和公司内部网下&#xff0c;搭建了服务器&#xff0c;或网络硬件设备&#xff0c;需要在异地远程访问使用的情况。家庭和公司内部宽带内…

水库防洪安全雨水情监测预警系统

水库防洪安全雨水情监测预警系统是一种高度集成现代信息技术与水利工程管理的综合性智能化管理平台&#xff0c;该系统主要应用于水库及其周边流域的实时水情监测与预警工作。通过部署先进的传感设备和监测网络&#xff0c;该系统能够全天候不间断地采集水库库区及周边区域的降…

【论文阅读】Editing Large Language Models: Problems, Methods, and Opportunities

Editing Large Language Models: Problems, Methods, and Opportunities原文摘要研究背景与问题提出核心问题&#xff1a;尽管LLM已具备强大的能力&#xff0c;但如何长期维持其时效性并修正错误仍缺乏系统方法论。现状&#xff1a;近年来&#xff0c;针对LLMs的模型编辑技术兴…

金融数据可视化的强力引擎 —— QtitanDataGrid在金融行业的应用实践

QtitanDataGrid是一款适用于Qt的商业化DataGrid 组件&#xff0c;它使得表格数据可以直接面向终端用户。这个组件吸收了用户界面结构显示表格方面所有的现代化技术的精华&#xff0c;是目前Qt市场上唯一一款拥有如此高级功能和出色性能的网格组件。这个Qt数据网格组件使用纯C创…

玩转 InfluxDB 3:用 HTTP API 快速创建高效数据表

前言 说起时间序列数据库,InfluxDB 绝对是业界响当当的明星。数据源源不断涌入,能否高效存储和查询,直接决定你的业务能不能飞速跑起来。可你还在用客户端或者命令行一点一点手动操作?朋友,这操作太老土,分分钟拖慢节奏。 现在是 API 自动化时代,HTTP API 可帮你轻松搞…

stc32g利用硬件I2C配合中断实现高效率异步无阻塞读写方法

I2C读写巨慢, 即使在400kbit/s下, 读写一个字节数据也要花费20多us, 这太慢了, 每读写一次设备的寄存器数据, 还要设备地址和寄存器地址, 又加了两个字节数据, 我就读了个传感器的两个字节数据而已, 动辄还要花费100us的阻塞时间, 这太浪费资源了针对这个问题, 我利用硬件I2C及…

生成式 AI 重塑自动驾驶仿真:4D 场景生成技术的突破与实践

近年来&#xff0c;伴随自动驾驶技术的快速发展&#xff0c;行业对于仿真测试平台的精度、覆盖率和可扩展性提出了更高要求。尤其在数据闭环迭代、长尾场景验证及安全冗余验证等关键环节中&#xff0c;高保真、高复杂度的场景生成能力正在成为测试体系的核心支撑。 传统场景生…

Java 启动命令的完整解析

以下为您提供的 Java 启动命令的完整解析和优化建议: nohup java -server \ -XX:+PrintGCDateStamps \ -XX:+PrintGCTimeStamps \ -Xlogger:/home/logs/gc_`date +%Y%m%d_%H%M`.log \ -jar ytr.jar > /dev/null & 一、命令逐行解析 命令部分 功能说明 技术原理 nohup …

JVM中的垃圾回收暂停是什么,为什么会出现暂停,不同的垃圾回收机制暂停对比

JVM中的垃圾回收暂停是什么&#xff1f; 在Java虚拟机&#xff08;JVM&#xff09;中&#xff0c;垃圾回收暂停&#xff08;Garbage Collection Pause&#xff09;&#xff0c;也称为“Stop-The-World”事件&#xff0c;是指当垃圾收集器执行特定阶段时&#xff0c;所有应用程序…

Spearman 相关系数与 Pearson 相关系数的区别

核心区别对比表特征Pearson 相关系数Spearman 相关系数相关性类型线性相关单调相关计算基础原始数据值数据排名&#xff08;秩&#xff09;公式数据要求连续变量&#xff0c;近似正态分布有序数据或连续变量异常值敏感性高度敏感不敏感取值范围[-1, 1][-1, 1]单调关系检测仅检测…

sqli-labs靶场less36-less40

less361.我们打开靶场之后打开来看一下&#xff0c;输入的内容会被转义&#xff0c;依旧是宽字节注入2.使用以下宽字节注入&#xff0c;使用的是%df?id-1%df%27%20union%20select%201,database(),3--3.剩余内容与前面关卡基本一样&#xff0c;只要使用上面的方法合成宽字节即可…

企业级 TinyMCE Vue 编辑器解决方案 – 配置优化与性能提升指南、自定义插件

## 简介TinyMCE Vue 是官方提供的 TinyMCE 富文本编辑器的 Vue 组件封装&#xff0c;支持 Vue 2 和 Vue 3。它让你可以在 Vue 项目中快速集成强大的富文本编辑能力&#xff0c;支持多种插件、主题和自定义扩展&#xff0c;适用于博客、内容管理、后台系统等多种场景。主要特性&…

【模电笔记】—— 直流稳压电源——稳压电路

Tips&#xff1a;本章节笔记建议读者综合学习&#xff0c;内容较多&#xff0c;可谓是模电相当重要的部分&#xff0c;因此部分知识点没有做到详细解释。 1.稳压电路的性能指标 &#xff08;同上节直流稳压电源的主要技术指标【模电笔记】—— 直流稳压电源——整流、滤波电路…

C++——设计模式

文章目录一、面向对象的优点和缺点1.1 回答重点1.2 扩展知识二、面向对象的三大特点2.1 回答重点2.2 扩展知识三、设计模式的六大原则3.1 回答重点3.1.1 单一职责原则&#xff08;Single Responsibility Principle, SRP&#xff09;3.1.2 开放 - 封闭原则&#xff08;Open-Clos…

Android PDFBox 的使用指南

Android PDFBox 使用指南 概述 PDFBox是一个强大的PDF处理库&#xff0c;在Android平台上也有对应的实现。本指南将介绍如何在Android项目中使用PDFBox进行PDF文件的加载、读取、修改等操作。 依赖配置 在 app/build.gradle 中添加PDFBox依赖&#xff1a; dependencies {i…

TFTP: Linux 系统安装 TFTP,文件系统启动后TFTP使用

安装 TFTP 服务器 sudo apt update sudo apt install tftpd-hpa配置 TFTP 服务器 编辑配置文件 /etc/default/tftpd-hpa&#xff1a; sudo nano /etc/default/tftpd-hpa 修改内容如下&#xff1a; TFTP_USERNAME"tftp" TFTP_DIRECTORY"/srv/tftp" TFTP_ADD…

昇思+昇腾开发板+DeepSeek模型LoRA微调

昇思昇腾开发板DeepSeek模型LoRA微调 LoRA微调原理核心思想&#xff1a;冻结预训练模型权重&#xff0c;仅训练橙色的低秩适配矩阵&#xff08;A/B矩阵&#xff09;优势&#xff1a; 训练参数量减少至全量微调的0.5%显存占用降低50%以上适配器权重仅需保存3MB&#xff08;原模型…

计算机网络:详解网络地址的计算步骤

网络地址计算是网络规划与配置的基础,核心是通过IP地址和子网掩码确定网络标识、广播地址、可用主机范围等关键信息。以下是详细的计算步骤,配合实例说明(以IPv4为例): 一、明确基础概念 在计算前,需先明确3个核心概念: IP地址:标识网络中主机的32位二进制数,通常以…

Spring AI 系列之三十五 - Spring AI Alibaba-Graph框架之MCP

之前做个几个大模型的应用&#xff0c;都是使用Python语言&#xff0c;后来有一个项目使用了Java&#xff0c;并使用了Spring AI框架。随着Spring AI不断地完善&#xff0c;最近它发布了1.0正式版&#xff0c;意味着它已经能很好的作为企业级生产环境的使用。对于Java开发者来说…

FastAPI后端工程化项目记录

以下是一个使用fastapi上传视频的接口&#xff0c;记录一下工程化后端程序的业务逻辑 重点是代码如何抽离 项目结构优化 project/ ├── .env # 环境变量配置 ├── app/ │ ├── __init__.py │ ├── main.py # 主应用入口 │ …