Spring Cloud Config简介

举报
别团等shy哥发育 发表于 2023/01/13 18:59:13 2023/01/13
【摘要】 @[toc] 1、Spring Cloud Config简介  Spring Cloud Config项目是一个解决分布式系统的配置管理方案。它包含Client和Server两部分,Server提供配置文件地存储,以接口的形式将配置文件的内容提供出去;Client通过接口获取数据,并依据此数据初始化自己的应用。Spring Cloud Config使用Git或SVN存放配置文件,默认情况下使...

@[toc]

1、Spring Cloud Config简介

  Spring Cloud Config项目是一个解决分布式系统的配置管理方案。它包含Client和Server两部分,Server提供配置文件地存储,以接口的形式将配置文件的内容提供出去;Client通过接口获取数据,并依据此数据初始化自己的应用。Spring Cloud Config使用Git或SVN存放配置文件,默认情况下使用Git。
Spring Cloud Config支持以下功能:

  • 提供服务端和客户端支持。
  • 集中管理各环境的配置文件。
  • 配置文件修改之后,可以快速生效。
  • 可以进行版本管理。
  • 支持大的并发查询。
  • 支持各种语言。
    统一配置中心组件流程图如下:
    在这里插入图片描述

2、Config Server开发

2.1 引入依赖

<!--引入统一配置中心-->
<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-config-server</artifactId>
</dependency>

为了服务注册,我们将consul、actuator等等也引入
在这里插入图片描述

2.2 在启动类上面开启统一配置中心服务

在这里插入图片描述

2.3 创建远程仓库

  创建仓库并复制远程仓库地址,这里我们创建公有仓库,如果是私有仓库的话必须在配置文件中指定用户名和密码。

https://gitee.com/interface_xiongtete/config.git

在这里插入图片描述
同时添加三个配置文件
configclient.properties:

server.port=8990
spring.application.name=CONFIGCLIENT


spring.cloud.consul.host=localhost
spring.cloud.consul.port=8500

configclient-dev.properties:

name=xiaosan

configclient-prod.properties:

name=xiaoming

2.4 在统一配置中心服务中修改配置文件指向远程仓库地址

server.port=8848
spring.application.name=CONFIGSERVER

#consul server
spring.cloud.consul.host=localhost
spring.cloud.consul.port=8500

#远程仓库地址
spring.cloud.config.server.git.uri=https://gitee.com/interface_xiongtete/config.git
#指定访问的分支
spring.cloud.config.server.git.default-label=master

#如果是私有库的话必须输入用户名和密码
#spring.cloud.config.server.git.username=
#spring.cloud.config.server.git.password=

在这里插入图片描述

2.5 启动统一配置中心服务

在这里插入图片描述

2.6 拉取远端配置

http://localhost:8848/configclient-xxxx.properties

在这里插入图片描述

在这里插入图片描述

http://localhost:8848/configclient-dev.properties

在这里插入图片描述

http://localhost:8848/configclient-prod.properties

在这里插入图片描述

3、Config Client开发

3.1 项目中引入config client依赖

<!--引入config client-->
<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-config</artifactId>
</dependency>

在这里插入图片描述

3.2 编写配置文件,告诉config server地址

springboot官方提供了一种解决方案,就是在使用统一配置中心时应该将微服务的配置文件名修改为bootstrap.(properties|yml),bootstrap.properties作为配置启动项目时,会优先拉取远程配置,远程配置拉取成功之后根据远程配置启动当前应用。

新建bootstrap.properties配置文件


#config server地址
#开启统一配置中心服务
spring.cloud.config.discovery.enabled=true
#指定统一配置服务中心的服务唯一标识(根据服务id去服务注册中心获取)
spring.cloud.config.discovery.service-id=CONFIGSERVER

#配置注册中心
spring.cloud.consul.host=localhost
spring.cloud.consul.port=8500

#指定从仓库的哪个分支拉取配置
spring.cloud.config.label=master
#指定拉取配置文件的名称
spring.cloud.config.name=configclient
#指定拉取配置文件的环境
spring.cloud.config.profile=prod


#开启所有web端点暴露
management.endpoints.web.exposure.include=*

在这里插入图片描述

3.3 编写测试controller

在这里插入图片描述

3.4 启动服务

在这里插入图片描述
从控制台的打印情况可看出configclient确实是从config server上拉取配置信息。
访问:http://localhost:8990/demo
在这里插入图片描述
虽然测试没有问题,但是这种方式如果我们远程的配置文件修改的话,必须要重启微服务才能读取最新的配置,有没有更好的解决方案呢?当然,下面请看手动配置刷新的解决方案。

4、手动配置刷新

4.1 说明

  在生产环境中,微服务可能非常多,每次修改完远端配置之后,不可能对所有服务进行重新启动,这个时候需要让修改配置的服务能够刷新远端修改之后的配置,从而不要每次重启服务才能生效,进一步提高微服务系统的维护效率。在springcloud中也为我们提供了手动刷新配置和自动刷新配置两种策略,这里我们先使用手动配置文件刷新。
  当远端git仓库中配置发生变化时,不需要重启微服务就可以直接读取远端修改之后的配置信息。

4.2 在config client端加入刷新暴露端点

management.endpoints.web.exposure.include=*          #开启所有web端点暴露

在这里插入图片描述

4.3 在需要刷新代码的类中加入刷新配置的注解@RefreshScope

@RestController
@RefreshScope //作用:用来在不需要重启微服务的情况下,将当前scope域中信息刷新为最新配置信息
@Slf4j
public class DemoController {

    @Value("${name}")
    private String name;

    @GetMapping("demo")
    public String demo(){
        log.info("demo OK!!!");
        return "demo ok: "+name;
    }

}

在这里插入图片描述

4.4 启动微服务并访问

http://localhost:8990/demo

在这里插入图片描述

4.5 修改远程配置

在这里插入图片描述
再次访问http://localhost:8990/demo

在这里插入图片描述
发现并没有自动刷新配置,必须调用刷新配置接口才能刷新配置。

4.6 手动调用刷新配置接口

使用postman或者curl工具发送post请求http://localhost:8990/actuator/refresh
在这里插入图片描述

4.7 再次访问发现配置已经成功刷新

在这里插入图片描述

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。