分布式微服務--Nacos作為配置中心(二)

前言: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 # 主應用入口 │ …