关键词: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;无论是上班族在家操…