Spring Cloud Config(微服務配置中心詳解)

關鍵詞:Spring Cloud Config、配置中心、遠程倉庫、動態刷新、加密解密


? 摘要

在微服務架構中,隨著服務數量的增加,統一管理各服務的配置信息變得尤為重要。傳統的本地配置文件方式難以滿足多環境、多實例、集中化的需求。

Spring Cloud Config 是 Spring Cloud 提供的一個分布式配置中心解決方案,支持將配置信息集中存儲在 Git、SVN 或本地文件系統中,并提供給各個微服務動態獲取和更新。

本文將圍繞 Spring Cloud Config 的核心功能與使用場景 展開講解:

  • Spring Cloud Config 原理概述
  • 搭建 Config Server 服務端
  • 微服務集成 Config Client 客戶端
  • 配置文件的命名規則與多環境支持
  • 動態刷新配置(@RefreshScope)
  • 加密與解密敏感信息
  • 實戰案例:結合 Eureka、Git 實現配置中心集群部署

📌 一、Spring Cloud Config 簡介

🔹 1. 什么是 Spring Cloud Config?

Spring Cloud Config 是一個用于為分布式系統中的多個微服務提供統一外部配置管理的服務組件。它支持從遠程 Git/SVN 存儲庫或本地目錄中讀取配置文件。

🔹 2. 主要特性

特性描述
集中式管理所有服務的配置統一管理,避免分散維護
多環境支持支持 dev、test、prod 等不同 profile 配置
動態刷新結合 Spring Cloud Bus + RabbitMQ/Kafka 實現配置熱更新
安全控制支持加密解密敏感信息(如數據庫密碼)

📌 二、搭建 Spring Cloud Config Server

🔹 1. 添加依賴(Maven)

<dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-config-server</artifactId></dependency>
</dependencies>

🔹 2. 啟動類添加注解

@SpringBootApplication
@EnableConfigServer
public class ConfigServerApplication {public static void main(String[] args) {SpringApplication.run(ConfigServerApplication.class, args);}
}

🔹 3. 配置 application.yml

示例:連接 GitHub 倉庫
server:port: 8888
spring:cloud:config:server:git:uri: https://github.com/yourname/config-repo.gitsearch-paths: config-data # 可選,指定子目錄

🔹 4. 啟動服務并訪問配置

啟動后可以通過以下 URL 獲取配置:

http://localhost:8888/{application}/{profile}/{label}

例如:

http://localhost:8888/user-service/dev/master

📌 三、微服務作為 Config Client 接入

🔹 1. 添加依賴(Maven)

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-config</artifactId>
</dependency>

🔹 2. 創建 bootstrap.yml(注意不是 application.yml)

spring:application:name: user-servicecloud:config:uri: http://localhost:8888profile: devlabel: master

🔹 3. 使用配置項

@Value("${user.config}")
private String userConfig;@GetMapping("/config")
public String getConfig() {return "當前配置值:" + userConfig;
}

📌 四、配置文件命名規則詳解

Spring Cloud Config 根據以下格式查找配置文件:

/{application}-{profile}.yml
/{application}-{profile}.properties

例如:

  • user-service-dev.yml
  • order-service-prod.yml

你還可以通過 /config-data 目錄下的文件結構組織多服務、多環境配置。


📌 五、動態刷新配置(@RefreshScope)

🔹 1. 添加 Actuator 依賴

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

🔹 2. 在 Bean 上添加 @RefreshScope 注解

@Component
@RefreshScope
public class UserProperties {@Value("${user.config}")private String userConfig;// getter/setter
}

🔹 3. 觸發刷新(POST 請求)

curl -X POST http://localhost:8080/actuator/refresh

📌 六、加密與解密敏感信息

🔹 1. 啟用加密支持

確保已安裝 Java Cryptography Extension (JCE),然后在配置中心項目中添加:

encrypt:key: my-secret-key

🔹 2. 加密明文內容

發送請求加密數據:

curl -X POST --data-urlencode "data=mydbpassword" http://localhost:8888/encrypt

返回類似:

{ "value": "ENC(AES/GCM/PBE加密后的字符串)" }

🔹 3. 在配置文件中使用加密值

spring:datasource:password: ENC(加密后的字符串)

📌 七、實戰案例:結合 Eureka 和 Git 實現配置中心集群

場景說明:

  • 搭建兩個 Config Server 實例,分別運行在 8888 和 8889
  • 使用同一個 Git 倉庫
  • 微服務通過 Eureka 注冊發現 Config Server 地址
  • 實現高可用與負載均衡
示例:Eureka + Config Client 配置
spring:cloud:config:discovery:enabled: trueservice-id: config-server
eureka:client:service-url:defaultZone: http://localhost:8761/eureka/

? 總結

以下是微服務配置的主要點:

模塊技能點
Spring Cloud Config 原理配置中心的作用與工作原理
Config Server 搭建Git/SVN 配置、YAML 文件命名規范
Config Client 接入微服務如何加載遠程配置
動態刷新機制使用 @RefreshScope 實現熱更新
加密解密配置對數據庫密碼等敏感信息進行安全處理
高可用部署結合 Eureka 實現集群部署與負載均衡

📚 參考資料

  • Spring Cloud Config 官方文檔
  • Spring Boot Actuator 文檔

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/87997.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/87997.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/87997.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Note】《深入理解Linux內核》 第二十章:深入理解 Linux 程序執行機制

《深入理解Linux內核》 第二十章&#xff1a;深入理解 Linux 程序執行機制&#xff08;Program Execution&#xff09;關鍵詞&#xff1a;exec 系列系統調用、可執行文件格式&#xff08;ELF&#xff09;、用戶地址空間、內存映射、動態鏈接、棧初始化、入口點、共享庫、內核態…

服務器如何配置防火墻規則以阻止惡意流量和DDoS攻擊?

防火墻是保護服務器免受惡意流量和 DDoS 攻擊的第一道防線。通過合理配置防火墻規則&#xff0c;可以有效阻止惡意訪問、限制不必要的流量&#xff0c;并減少攻擊對服務器的影響。以下是配置防火墻規則的全面指南&#xff0c;包括基礎規則設置、防御 DDoS 攻擊的高級策略和最佳…

持續性投入是成就自我價值的關鍵一環

概述 時間&#xff0c;的唯一公平之處就是給你我的長度是相同的&#xff0c;這也是它唯一公平&#xff0c;也是不公平的地方。 所謂的公平&#xff0c;就是不患寡而患不均中所說的平均。 所謂的不公平就是&#xff0c;相同時間內我們彼此對應的標價不同&#xff0c;延伸到后…

使用allegro在BoardGeometry的Silkscreen_Top層畫出圖案

目錄 1. 圖形及圖形放置顯示2. 繪制 1. 圖形及圖形放置顯示 繪制完成圖案&#xff1a; 導出后圖案&#xff1a; 2. 繪制 圖層選中&#xff1b; 畫圓型&#xff1b; 半徑3.5mm&#xff0c;原點生成&#xff1b; 在圖案中挖空&#xff1b; 用指令走線&#xff1a; …

Kotlin 協程:Channel 與 Flow 深度對比及 Channel 使用指南

前言 在 Kotlin 協程的異步編程世界里&#xff0c;Channel 和 Flow 是處理數據流的重要工具&#xff0c;它們有著不同的設計理念與適用場景。本文將對比二者功能與應用場景&#xff0c;詳細講解 Channel 的使用步驟及注意事項 。 一、Channel 與 Flow 的特性對比 Channel 是協程…

MYsql主從復制部署

MySQL 主從復制是將主數據庫的變更自動同步到從數據庫的過程&#xff0c;常用語讀寫分離、高可用性和數據備份。 1.環境準備 確保主從服務器已安裝相同版本的 MySQL&#xff0c;并能通過網絡互相訪問。 # 檢查 MySQL 版本 mysql -V 2.配置主服務器 &#xff08;1&#xff0…

安燈呼叫看板如何實現汽車生產異常秒級響應

在汽車零部件工廠的靜置車間&#xff0c;傳統生產管理依賴人工巡檢與紙質記錄&#xff0c;存在效率低、信息滯后、異常響應慢等問題。某汽車廠曾因物料靜置時間未及時監控&#xff0c;導致批次混料&#xff0c;損失超10萬元。而安燈呼叫看板系統的引入&#xff0c;通過實時狀態…

構造函數注入在spring boot 中怎么使用詳解

我們來詳細講解一下在 Spring Boot 中如何使用構造函數注入&#xff0c;并通過一個完整的、可運行的例子來演示。 構造函數注入是 Spring 官方最推薦的依賴注入方式&#xff0c;因為它能保證對象的不可變性和依賴的完整性。 核心理念 在 Spring Boot 中使用構造函數注入非常簡單…

2025.6.30-2025.7.06第26周:第一次參加頭馬演講俱樂部

現在是周一早上6:23&#xff0c;我開始寫上周的周總結。 3件超出預期的事 參加頭馬俱樂部絕對是最超出預期的&#xff0c;使得這個周末格外的快樂簡歷的第一版終于改完了&#xff0c;花了好長的時間&#xff0c;其中有一天心情還很蕩&#xff0c;因為&#xff0c;我想&#x…

2025使用VM虛擬機安裝配置Macos蘋果系統下Flutter開發環境保姆級教程--下篇

其實如何安裝VM,如何安裝MACOS網上的教程很多,我只是結合我的體驗重新整理了一次,接下來才進入本教程最核心的部分,Flutter開發環境的配置部分。、一.配置前準備 主要是準備相應的工具包,以及其他虛擬機設置1.工具包 工具包的版本也可以自行配置,我這主要是我使用的是F…

QSPI、OSPI與FSMC的區別與內存映射分析

QSPI、OSPI與FSMC的區別與內存映射分析 基本概念與區別 1. FSMC (靈活靜態存儲控制器) 接口類型&#xff1a;并行接口&#xff0c;通常8/16位數據總線總線標準&#xff1a;傳統并行總線協議速度&#xff1a;相對較低&#xff0c;通常最高約100MHz應用場景&#xff1a;SRAM、NOR…

系統思考與心智模式探索

成長的真正障礙&#xff0c;不是能力的不足&#xff0c;而是看待問題的局限。 在復雜多變的商業環境中&#xff0c;我們往往習慣于解決“眼前”的問題&#xff0c;卻忽視了深藏背后的系統性障礙。我們看到的只是表面的“癥狀”&#xff0c;而真正的根源&#xff0c;卻往往隱藏…

物聯網技術的關鍵技術與區塊鏈發展趨勢的深度融合分析

一、物聯網技術的核心架構與關鍵技術 物聯網技術體系由感知層、網絡層、平臺層、應用層和安全層構成&#xff0c;各層技術協同工作&#xff0c;實現物理世界與數字世界的深度融合。 感知層&#xff1a;物聯網的“感官” 傳感器技術&#xff1a;包括環境傳感器&#xff08;溫度…

針對Exhcnage Server的攻擊防范措施

一、背景介紹最近&#xff0c;安全研究人員揭露了一個名為 NightEagle&#xff08;又名 APT-Q-95&#xff09; 的高級持續性威脅&#xff08;APT&#xff09;組織。這個組織被觀察到利用 Microsoft Exchange 服務器中的零日漏洞鏈 進行攻擊&#xff0c;其主要目標是中國政府、國…

編程基礎:繼承

能幫到你的話&#xff0c;就給個贊吧 &#x1f618; 文章目錄繼承&#xff1a;使用基類成員&#xff1a;前提——派生類必須同樣支持基類成員(組件和功能)示例&#xff1a;動物Animal 有 鰓 和 會飛。則 鳥Bird 不是 Animal&#xff0c;因為Bird雖會飛&#xff0c;卻沒有鰓。魚…

TMC4361A 使用(未驗證)

prompt 我用STM32F103C8T6 來控制 TMC4361A 運動控制芯片 &#xff0c;我配置 STM32F103C8T6 的 SPI1 與 TMC4361A 進行通信&#xff0c;配置 PA4 作為片選線&#xff0c;配置 PA8 作為 RCC_MCO 輸入時鐘輸入到 TMC4361A, 并將其連接到TMC4361A的CLK_EXT引腳。我想控制 TMC4361…

深度剖析:如何解決Node.js中mysqld_stmt_execute參數錯誤

在Node.js后端開發中&#xff0c;使用mysql2等數據庫驅動與MySQL/MariaDB交互時&#xff0c;Incorrect arguments to mysqld_stmt_execute 是一個令人頭疼的錯誤。它通常意味著你傳遞給SQL預處理語句的參數數量與SQL字符串中問號&#xff08;?&#xff09;占位符的數量不匹配。…

Vue3 學習教程,從入門到精通,Vue 3 安裝指南及語法知識點詳解(2)

Vue 3 安裝指南及語法知識點詳解 本文將詳細介紹 Vue 3 的所有安裝方式&#xff0c;并深入講解 Vue 3 的語法知識點。此外&#xff0c;還將提供一些綜合性案例&#xff0c;展示如何綜合運用 Vue 3 的各項功能。一、安裝 Vue 3 的所有方式 Vue 3 提供了多種安裝方式&#xff0c;…

C++基礎復習筆記

一、數組定義 在C中&#xff0c;數組初始化有多種方式&#xff0c;以下是常見的幾種方法&#xff1a; 默認初始化 數組元素未顯式初始化時&#xff0c;內置類型&#xff08;如int、float&#xff09;的元素值未定義&#xff08;垃圾值&#xff09;&#xff0c;類類型調用默認構…

手機和PC遠控安全深度測評:TeamViewer/ToDesk/向日葵安全防線對比

聲明&#xff1a;本測試報告系作者基于個人興趣及使用場景開展的非專業測評&#xff0c;測試過程中所涉及的方法、數據及結論均為個人觀點&#xff0c;不代表任何官方立場或行業標準。 一、引言 當下遠程控制技術已深度融入大眾的工作與生活&#xff0c;無論是上班族在家操…