配置中心

配置中心#

概念

为什么需要配置中心

单体应用,配置写在配置文件中,没有什么大问题

如果要切换环境,可以切换不同的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
```

posted @   BigBender  阅读(109)  评论(0编辑  收藏  举报
编辑推荐:
· 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 让容器管理更轻松!
点击右上角即可分享
微信分享提示
主题色彩