Config组件

作用:用来实现微服务系统中服务配置统一管理

组件:统一实现配置中心服务端、统一配置中心客户端client

image-20210816152724608

在项目中,如果每一次集群都存在一个单独的配置文件,这样的话在遇到修改配置的时候,如果是多集群的情况下,工作量会十分的庞大,所以方便我们管理各个服务的配置。给我们提供了Config组件,为了实现高效的管理,我们一般将总配置文件放到远程仓库,然后配置ConfigServer 从远程仓库读取配置并缓存到本地,

ConfigServer的使用

1、首先我们选择一个远程git仓库,并且获取仓库地址(先简单创建一个空的仓库就好),在这个我选的是gitee,因为国内访问比较快

2、在创建的项目中引入config server 依赖

1
2
3
4
5
<!--        config server-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>

配置application.yaml 远程仓库地址

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
server:
port: 8848
spring:
application:
name: CONFIGSERVER
cloud:
consul:
host: localhost
port: 8500
#配置远程仓库的地址
config:
server:
git:
uri: https://gitee.com/best_rookie/configs.git
default-label: master

开启统一配置中心

@EnableConfigServer

Config Client 配置客户端组件

1、首先创建一个SpringBoot项目(在实际的应用中configclient就是一个个的服务)

2、将自身的配置文件交给远程git仓库来管理

image-20210817100128019

3、引入config client依赖

1
2
3
4
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>

4、编写配置文件 (这个是用来开启远程配置文件的)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
spring:
cloud:
#因为我们从注册中心寻找ConfigServer 所以注册中心的配置要写在这里
consul:
host: localhost
port: 8500
config:
#确定分支
label: master
#确定配置文件
name: configclient
#确定环境
profile: dev
#告诉当前的configclient统一配置中心在注册中心id
discovery:
service-id: CONFIGSERVER
#开启当前configclient 根据服务id去注册中心获取
enabled: true

注:这个配置文件是动态配置文件,并非是传统的配置文件,所以不能再叫application,如果没有修改,会服务会报错,所以需要修改为bootstrap

手动配置刷新

配置完远程配置文件,如果修改了配置文件内容需要重启服务才能刷新配置文件的内容,这样的话每次修改完配置,都需要重启服务,这样过于繁琐。可以通过手动配置来实现刷新配置文件。

1、首先在所有Controller类中添加注解@RefreshScope,这个注解是用来在不需要重启微服务情况下,将当前scope域中信息刷新为最新配置信息,没加的这个注解的类不会起作用。

2、当修改完远程git仓库配置文件之后,向每一个微服务发送一个post方式请求

注意:必须是POST请求 http://localhost:port/actuator/refresh

3、必须在微服务配置文件中暴露远端配置刷新端点

1
2
3
4
5
management:
endpoints:
web:
exposure:
include: "*"

评论