Spring Cloud Config分布式配置
分布式系统面临的–配置文件问题
微服务意味着要将单体应用中的业务差分成一个个子服务,每个服务的颗粒相对较小,因此系统中会出现大量的服务,由于每个服务都需要必要的配置信息才能运行,所以一套集中式的,动态的配置管理设施是必不可少的,Spring Cloud 提供了Config Server来解决这个问题,我们每一个微服务自己都带着一个Application.yaml,那上百的配置文件要修改起来,岂不是要发疯!
什么是Spring Cloud Config分布式配置中心
Spring Cloud Config为微服务架构中的微服务提供集中化的外部配置支持,配置服务器为每个不同微服务应用的所有环节提供了一个中心化的外部配置。
Spring Cloud Config 分为服务端和客户端两部分
- 服务端:服务端也成为分布式配置中心,他是一个独立的微服务应用,用来连接配置服务器并为客户端提供获取配置信息,加密,解密信息等访问接口
- 客户端:客户顿则是通过指定的配置中心来管理应用该资源,以及与业务相关的配置内容,并在启动的时候从配置中心获取和加载配置信息,配置服务器默认采用git来存储配置信息,这样就有助于对配置环境进行版本管理,并且还可以通过git客户端工具来方便管理和访问配置内容
Spring Cloud Config分布式配置中心能干嘛?
- 集中管理配置文件
- 不同环境,不同配置,动态化的配置更新,分环境部署,
- 运行期间动态调整配置,不再需要每个服务部署的机器上编写配置文件,服务会向配置中心统一拉去配置自己的信息。
- 当配置文件发生变动时,服务不需要重启,即可感知服务的变化,并应用新的配置
- 将配置信息已以REST接口的形式暴露
Spring Cloud Config分布式配置中心与github整合
由于Spring Cloud Config 默认使用Git来存储配置文件(也有其他方式,比如纸质SVN和本地文件),但是最推荐的还是Git,而且使用的是HTTP / HTTPS访问的样式、
搭建服务端
搭建服务端【8050】:链接远程仓库
1、创建服务,导入依赖
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
<version>2.1.1.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
</dependencies>
2、编写配置文件,(设置服务端口,设置服务名,设置远程仓库地址)
server:
port: 8050
spring:
application:
name: springcloud-config-server
# 链接远程仓库
cloud:
config:
server:
git:
uri: https://github.com/Aaron-all/springcloud-config.git
3、编写启动类,写注解,支持Config Server@EnableConfigServer
@EnableConfigServer
@SpringBootApplication
public class Config_server_8050 {
public static void main(String[] args) {
SpringApplication.run(Config_server_8050.class,args);
}
}
4、在远程仓库中上传配置文件
spring:
profiles:
active: dev
---
spring:
profiles: dev
application:
name: springcloud-config-dev
---
spring:
profiles: test
application:
name: springcloud-config-tes
注册中心的配置文件
把注册中心需要用的配置文件,放到Github上
1、在本来的配置文件添加开发环境
spring:
profiles:
active: dev
---
server:
port: 7001
spring:
profiles: dev
2、添加Spring Cloud Config的依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
<version>2.1.1.RELEASE</version>
</dependency>
3、添加配置文件bootstrap.yaml
spring:
cloud:
config:
label: main
uri: http://localhost:8050
name: config-eureka
profile: dev
4、象征性的添加application.yaml
配置文件
spring:
application:
name: springcloud-config-eureka-7001
5、启动即可用远程的配置信息了。这个服务是通过服务端【8050】服务进行与远程服务进行连接调用的,所以必须要先开启服务端的服务。