SpringCloud Config分布式配置中心

2024-01-24

代码地址

地址: https://github.com/13thm/study_springcloud/tree/main/days10_Config

简介

微服务意味着要将单体应用中的业务拆分成一个个子服务,每个服务的粒度相对较小,因此系统中会出现大量的服务。由于每个服务都需要必要的配置信息才能运行,所以 一套集中式的、动态的配置管理设施 是必不可少的。

SpringCloud提供了ConfigServer来解决这个问题,我们每一个微服务自己带着一个application.yml,上百个配置文件的管理…

作用:

  1. 不同环境不同配置,动态化的配置更新,分环境部署比如dev/test/prod/beta/release
  2. 运行期间动态调整配置,不再需要在每个服务部署的机器上编写配置文件,服务会向配置中心统一拉取配置自己的信息
  3. 当配置发生变动时,服务不需要重启即可感知到配置的变化并应用新的配置

与GitHub整合配置

  1. 用你自己的账号在GitHub上新建一个名为springcloud-config的新Repository

  2. 拉取到本地

git clone git@github.com:13thm/springcloud-config.git

不知道为什么 这里总是拉取不下来总是超时,用了vpn还是不行…

然后后面就换到Gitee 里面试了

https://gitee.com/thmiao/springcloud-config

项目整合

  1. 新建Module模块cloud-config-center-3344
  2. 写pom
  3. 改yml
  4. 写主启动类
  5. windows下修改hosts文件,增加映射
    地址:
C:\Windows\System32\drivers\etc

在这里插入图片描述
在这里插入图片描述

127.0.0.1  config-3344.com

打开命令提示符(Command Prompt)或 PowerShell,以管理员身份运行。然后执行以下命令来刷新 DNS 缓存:

ipconfig /flushdns

测试

测试通过Config微服务是否可以从GitHub上获取配置内容

http://config-3344.com:3344/master/config-dev.yml
http://localhost:3344/master/config-dev.yml

在这里插入图片描述

/{name}-{profiles}.yml
例子:http://localhost:3344/config-dev.yml


/{label}-{name}-{profiles}.yml
例子:http://localhost:3344/master/config-dev.yml
 

label:分支(branch)

name :服务名

profiles:环境(dev/test/prod)

Config客户端配置与测试

  1. 新建cloud-config-client-3355
  2. 写pom
  3. 写bootstrap.yml(配置文件)
    applicaiton.yml是用户级的资源配置项

bootstrap.yml是系统级的,优先级更加高

Spring Cloud会创建一个“Bootstrap Context”,作为Spring应用的 Application Context 的父上下文。初始化的时候, Bootstrap Context 负责从外部源加载配置属性并解析配置。这两个上下文共享一个从外部获取的 Environment

  1. 主启动
  2. 业务类

测试

http://config-3344.com:3344/master/config-dev.yml
http://config-3344.com:3344/master/config-dev.yml
http://localhost:3355/configInfo

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

成功实现了客户端3355访问SpringCloud Config3344通过GitHub获取配置信息

Config客户端之动态刷新

问题随时而来,分布式配置的动态刷新问题

  1. Linux运维修改GitHub上的配置文件内容做调整
  2. 刷新3344,发现ConfigServer配置中心立刻响应
  3. 刷新3355,发现ConfigClient客户端没有任何响应
  4. 3355没有变化除非自己重启或者重新加载
  5. 难到每次运维修改配置文件,客户端都需要重启??噩梦
    避免每次更新配置都要重启客户端微服务3355

修改3355模块
1 . POM引入actuator监控

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
  1. 修改YML,暴露监控端口
  2. 业务类Controller修改

测试

访问:

http://config-3344.com:3344/master/config-dev.yml
http://localhost:3355/configInfo

修改:
- 此时修改github—> 3344 ---->3355
- 这时候访问

需要运维人员发送Post请求刷新3355

# 必须是POST请求
curl -X POST "http://localhost:3355/actuator/refresh"

这下就实现了 避免客户端都需要重启

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SpringCloud Config分布式配置中心 的相关文章

随机推荐