配置中心
配置中心#
概念
为什么需要配置中心
单体应用,配置写在配置文件中,没有什么大问题
如果要切换环境,可以切换不同的profile(2种方式),但在微服务中
- 微服务比较多,成百上千,配置很多,需要集中管理
- 管理不同环境的配置
- 需要动态调整配置参数,更改配置不停服
配置中心介绍#
分布式配置中心包括3个部分:
- 存放配置的地方:git ,本地文件等
- config server:从 1 读取配置
- config client:是 config server 的客户端消费配
配置都不会自己更新,都是需要触发client才去git上拉取的或者触发在config-server上查看配置时,才去git上拉取
使用#
- 环境部署之前,将所需的配置信息推送到配置仓库
- 启动配置中心服务端,将配置仓库的配置信息拉取到服务端,配置服务端对外提供RESTful接口
- 启动配置客户端,客户端根据 spring.cloud.config 配置的信息去服务器拉取相应的配置
创建4个配置文件#
config-client-dev.yml
env: dev
Config Server#
官方地址:https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-config-server
添加依赖
<!-- 配置中心服务端:config-server --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-server</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency>
yml
spring:
cloud:
config:
server:
git:
uri: https://github.com/xxxxx
username:
password:
#默认是秒,因为git慢
timeout: 15
启动类#
添加注解
@EnableConfigServer
测试:
启动eureka,config-server
访问:
http://localhost:6001/config-client-dev.yml
http://localhost:6001/config-client-dev.properties
http://localhost:6001/config-client-dev.json
获取配置规则:根据前缀匹配#
- /{name}-{profiles}.properties
- /{name}-{profiles}.yml
- /{name}-{profiles}.json
- /{label}/{name}-{profiles}.yml
- name 服务名称
- profile 环境名称,开发、测试、生产:dev qa prd
- lable 仓库分支、默认master分支
匹配原则:最左前
换分支#
dev分支上:config-client-dev.yml
#服务端口
server:
port: 8001
env: branch-dev-dev
访问
- http://localhost:6001/dev/config-client-dev.yml
- http://localhost:6001/dev/config-client-dev.json
不写分支,默认是master
Config client#
discovery方式
pom
<!-- 配置中心客户端:config-client --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-client</artifactId> </dependency> <!-- web --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- eureka客户端 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency>
application.yml
server:
port: 8011
bootstrap.yml
#应用名称,配置文件名,此时:congif-client-dev.yml
spring:
application:
name: config-client
cloud:
config:
discovery:
enabled: true
# config server 的服务id
service-id: config-server
# 环境
profile: dev
# 分支
label: master
代码
@Value("${env}") private String env;
访问
http://localhost:8011/config/env0
远程配置已经拉过来了
url方式#
```sh
spring:
cloud:
config:
# 和下面的discovery互斥
# uri:
# - http://localhost:6001
```
作者:BigBender
出处:https://www.cnblogs.com/BigBender/p/14535066.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!