SpringCloud Hoxton——Config服务配置

简介: SpringCloud Hoxton——Config服务配置

1.开篇



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


SpringCloud Config为微服务架构中的微服务提供集中化的外部配置支持,配置服务器为各个不同微服务应用的所有环境提供了一个中心化的外部配置。


SpringCloud Config分为服务端和客户端两部分。


服务端也称为分布式配置中心,它是一个独立的微服务应用,用来连接配置服务器并为客户端提供获取配置信息,加密/解密信息等访问接口。


客户端则是通过指定的配置中心来管理应用资源,以及与业务相关的配置内容,并在启动的时候从配置中心获取和加载配置信息配置服务器默认采用git来存储配置信息,这样就有助于对环境配置进行版本管理,并且可以通过git客户端工具来方便的管理和访问配置内容。


服务配置Config能干嘛?

·       不同环境有着不同配置,比如:devtestprodbetarelease等,需要动态化的配置更新。

·       运行期间动态调整配置,不再需要在每个服务部署的机器上编写配置文件,服务会向配置中心统一拉取配置自己的信息。

·       当配置发生变动时,服务不需要重启即可感知到配置的变化并应用新的配置。

·       将配置信息以REST接口的形式暴露。

2.项目源码


github源码地址:https://github.com/2656307671/SpringCloud-Hoxton-Config

gitee源码地址:https://gitee.com/szh-forever-young/SpringCloud-Hoxton-Config


具体步骤如下:👇👇👇


首先,我这里考虑到访问github是外网,有的时候比较慢,所以我使用gitee来做模拟。其实效果都是一样的。

github/gitee上创建一个仓库,然后向仓库中添加几个文件(使用git命令)。添加内容参考:https://gitee.com/szh-forever-young/springcloud-config

这里不再说git命令了,可以参考我的分栏:https://blog.csdn.net/weixin_43823808/category_11047727.html


2.1 Config服务端配置与测试


对应的是源码中的 cloud-config-center-3344 模块,大家可以自行查看。

有关配置细节如下:👇👇👇

其中,label是分支,application是配置文件前缀名,profile是配置文件后缀名。


也就是说,先启动7001,再启动 cloud-config-center-3344 微服务模块测试,测试urlhttp://localhost:3344/master/config-dev.yml

这里根据该模块的application.yml配置文件中找到gitee中的springcloud-config仓库,master分支,config-dev.yml文件,读取其中的内容。


2.2 Config客户端配置与测试(动态刷新)


对应的是源码中的 cloud-config-client-3355 模块,大家可以自行查看。

先启动7001,再启动 3344,最后启动 3355


测试urlhttp://localhost:3355/configInfo,这里直接通过controller中的请求路径访问。此时是可以正常访问拿到数据的,但是有一个问题:当前我们启动了700133443355,如果说我们修改了配置文件config-dev中的内容,将版本号修改了,那么此时3344是可以直接刷新拿到最新的数据,因为它是直接和gitee仓库相连的;但是3355经过测试是无法拿到最新数据的,只能通过重启3355微服务才可以。这就很麻烦了,难道修改一次就要重启一次吗?后面的微服务会越来越多,重启肯定耗费资源时间。


解决方法如下:👇👇👇


首先在3355pom中添加 actuator 起步依赖。

其次在yml中添加内容暴露监控端口:

management:
 endpoints:
   web:
     exposure:
       include: "*"


在业务类controller上方添加 @RefreshScope 注解,支持动态刷新。

以上三步完成之后,我们重启3355微服务,然后将gitee仓库中的config-dev文件做个小修改。


3344可以正常拿到最新的数据。


此时,需要使用curl命令来为3355进行一次动态刷新,即可拿到最新的数据。

这里可以看到3344Config服务端、3355Config客户端都已经实现了动态刷新拿到最新的数据。

但是还是存在问题的,这里只有3355这一个Config客户端,如果有多个呢?每个微服务都要执行一次curl -X POST请求,这样手动刷新岂不是耗时耗力。可不可以广播、一次通知、处处生效呢?答案是当然可以,我在下一篇文章:Bus服务总线中再说。

相关文章
|
1月前
|
存储 数据可视化 Java
基于MicrometerTracing门面和Zipkin实现集成springcloud2023的服务追踪
Sleuth将会停止维护,Sleuth最新版本也只支持springboot2。作为替代可以使用MicrometerTracing在微服务中作为服务追踪的工具。
105 1
|
12天前
|
JSON Java 测试技术
SpringCloud2023实战之接口服务测试工具SpringBootTest
SpringBootTest同时集成了JUnit Jupiter、AssertJ、Hamcrest测试辅助库,使得更容易编写但愿测试代码。
44 3
|
2月前
|
消息中间件 存储 Java
SpringCloud基础9——服务异步通信-高级篇
消息可靠性、死信交换机、惰性队列、MQ集群
SpringCloud基础9——服务异步通信-高级篇
|
2月前
|
负载均衡 Java Nacos
SpringCloud基础2——Nacos配置、Feign、Gateway
nacos配置管理、Feign远程调用、Gateway服务网关
SpringCloud基础2——Nacos配置、Feign、Gateway
|
2月前
|
Java 开发工具 对象存储
简化配置管理:Spring Cloud Config与Netflix OSS中的动态配置解决方案
简化配置管理:Spring Cloud Config与Netflix OSS中的动态配置解决方案
48 2
|
2月前
|
Java API 对象存储
微服务魔法启动!Spring Cloud与Netflix OSS联手,零基础也能创造服务奇迹!
这段内容介绍了如何使用Spring Cloud和Netflix OSS构建微服务架构。首先,基于Spring Boot创建项目并添加Spring Cloud依赖项。接着配置Eureka服务器实现服务发现,然后创建REST控制器作为API入口。为提高服务稳定性,利用Hystrix实现断路器模式。最后,在启动类中启用Eureka客户端功能。此外,还可集成其他Netflix OSS组件以增强系统功能。通过这些步骤,开发者可以更高效地构建稳定且可扩展的微服务系统。
58 1
|
3月前
|
Cloud Native Java Nacos
Spring Cloud Config、Apollo、Nacos和Archaius对比
这篇文章对比了Spring Cloud Config、Apollo、Nacos和Archaius这四种配置中心的适应场景、优缺点。文中讨论了它们的功能特点,例如Spring Cloud Config的集中化配置管理和动态刷新能力,Apollo的实时配置推送和权限治理,Nacos的服务发现和管理功能,以及Archaius的动态配置更新能力。文章指出选择配置中心应根据项目需求和架构来决定,并提供了一个对比图来帮助读者更直观地理解这些工具的差异。
107 1
Spring Cloud Config、Apollo、Nacos和Archaius对比
|
1月前
|
负载均衡 Java API
【Spring Cloud生态】Spring Cloud Gateway基本配置
【Spring Cloud生态】Spring Cloud Gateway基本配置
38 0
|
3月前
|
Java 微服务 Spring
Spring Cloud全解析:配置中心之解决configserver单点问题
但是如果该configserver挂掉了,那就无法获取最新的配置了,微服务就出现了configserver的单点问题,那么如何避免configserver单点呢?
|
2月前
|
算法 安全 Java
微服务(四)-config配置中心的配置加解密
微服务(四)-config配置中心的配置加解密