0%

springCloudConfig简介

springCloudConfig简介

微服务将单体应用拆分为一个个的子服务,而每个服务都需要必要的配置信息才能运行,所以有一套集中式的、动态的配置管理设施必不可少,springCloud就提供出了一套配置中心SpringCloudConfig来进行配置管理

springCloudConfig分为客户端和服务端两部分。

服务端称为分布式配置中心,是一个独立的微服务应用,用来连接配置服务器并为客户端提供获取配置信息的访问接口,集中管理应用程序各个环境下的配置,配置服务器默认采用git来存储配置信息,并可以通过git客户端工具来方便的管理和访问配置内容;

客户端是通过指定的配置中心来管理应用资源,在启动的时候从配置中心获取和加载配置信息。

作用

  • 集中管理配置文件
  • 不同环境不同配置,动态化的配置更新
  • 运行期间动态调整配置,服务会向配置中心统一拉取
  • 配置发生变化时,服务不需要重启即可感知到配置的变化并应用新的配置
  • 将配置信息以rest接口形式暴露

配置

服务端配置

依赖
1
2
3
4
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
启动类
1
2
3
4
5
6
7
8
@SpringBootApplication
@EnableConfigServer // Config Server
public class ConfigApp {

public static void main(String[] args) {
SpringApplication.run(ConfigApp.class,args);
}
}
配置

首先在github上新建一个仓库,在该仓库中application.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
spring:
application:
name: micro-service-config
cloud:
config:
server:
git:
uri: https://github.com/isfox/micro_service_config
clone-on-start: true # 默认情况下,在配置被首次请求时,Config Server才会clone Git仓库,配置为true可以在启动时就clone
# uri: git@github.com:isfox/micro_service_config.git #git仓库 使用ssh方式没有连接成功,之后尝试一下看什么问题
search-paths:
- myconfig #搜索的目录
basedir: /User/zhanghe/Desktop/config-repo #config-server还会创建一个本地缓存来缓存获取到的git中的配置,该目录会被git所管理,是一个git仓库,如果不指定的话,会进行随机创建
force-pull: true #强制拉取保证本地是最新的

支持rest风格的方式获取资源(label指的是github的分支名称,profile指的是环境,application服务名)

1
2
3
4
5
/{application}/{profile}[/{label}]
/{application}-{profile}.yml
/{label}/{application}-{profile}.yml
/{application}-{profile}.properties
/{label}/{application}-{profile}.properties

客户端配置

spring有两种配置文件,一种是application.yml,是用户级别的资源配置项;第二种是bootstrap.yml,是系统级别的,优先级更高,springcloud对于bootstrap.yml会创建一个’Bootstrap Context’,作为Spring应用的Application Context的父上下文,初始化时,Bootstrap Context负责从外部源加载配置属性并解析配置,这两个上下文共享一个从外部获取的Environment,Bootstrap的优先级更高,默认情况下,不会被被本地配置覆盖

在bootstrap.yml中配置以spring.cloud.config为前缀的配置

依赖
1
2
3
4
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
配置
1
2
3
4
5
6
7
8
9
spring:
application:
name: micro-service-config-client
cloud:
config:
name: micro-service-config-client #github上的资源文件名,对应上述的application,该值默认为${spring.application.name}的值
profile: dev # 环境
label: master # git分支
uri: http://localhost:7010 #spring cloud 服务端地址

欢迎关注我的其它发布渠道