SpringCloud_Config配置中心
传统的管理配置文件是十分复杂的,还需要在配错的时候需要重启服务器。
- 分布式配置中心思想
就是不用重启服务器的情况下,将配置文件中的内容实时的更新到项目中去。 - 常见分布式配置中心对比
Apollo阿波罗 携程写的分布式配置中心,有图形界面管理的配置中心。
SpringCloud Config 没有后台可管理的分布式配置中心,配置文件信息存放在版本控制器中(git |svn )
使用zookeeper实现分布式配置中心,持久结点+时间通知 - 搭建Git环境存储配置文件(码云)
- 分布式配置中心都需要哪些组件
- web管理系统—后台可以使用图像界面管理配置文件SpringCloud Config没有图像管理配置文件
- 存放分布式配置文件服务器(持久化存储的)----使用版本控制器存放配置文件信息 使用git环境。
- ConfigServer缓存 配置文件服务器(临时存储)。
- ConfigClient 读取ConfigServer配置文件信息。
- 要有一个git | svn服务器 存放持久化配置信息。
- git上的文件夹以项目进行区分
- 环境如何区分的
- dev:开发环境
- sit:测试环境
- pre:预发布环境
- prd:准生产环境
我只说sit和prd环境
- 在git上如何存放配置文件
- 第一步搭建git服务器
- 分布式配置中心都需要哪些组件
- 搭建ConfigServer配置文件中心
- 建立maven工程,将相关依赖导入进去
- 在yml中将和git连接配置代码如下:
###服务注册到eureka地址
eureka:
client:
service-url:
defaultZone: http://localhost:8100/eureka
spring:
application:
####注册中心应用名称
name: config-server
cloud:
config:
server:
git:
###git环境地址
uri: https://gitee.com/itmayi/config.git
####搜索目录
search-paths:
- config
####读取分支
label: master
####端口号
server:
port: 8888
在将项目启动目录上加上@EnableConfigServer就可以启动了。
- 文件的命名规范问题:存放文件名的规范:以服务名称+环境.properties或者yml结尾。:如member-dev-properties文件。
- 现在就建立了一个ConfigServer的缓存服务器。
- 现在就可以利用Eureka的注册中心访问config配置文件。
- ConfigClient读取ConfigServer配置文件信息
- 先导入依赖
- 配置一下yml文件代码如下:
spring:
application:
####注册中心应用名称
name: config-client
cloud:
config:
####读取后缀
profile: dev
####读取config-server注册地址
discovery:
service-id: config-server
enabled: true
###eureka服务注册地址
eureka:
client:
service-url:
defaultZone: http://localhost:8100/eureka
server:
port: 8882
配置文件的具体每个都是干什么的我上面都写了,现在就说一下怎么读取了,在想要获取配置信息的类上面加上私有的变量,之后用@Value来读取git上面的文件信息。
- SpringCloudConfig实时刷新配置文件
- 现在Client和Server端都已经准备好,如果改变一下git上面的配置文件会不会实时改变系统中的文件信息,如果是直接调用Git和Server中的接口是实时的,但是通过Client端调用Server不是实时的,因为有缓存。
- 但是现在不是实时的,有两种方案:(都不用重启服务器)
- 手动刷新:需要人工调用接口 读取配置文件步骤如下:
- 先导入依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>
- 添加yml文件的配置内容如下:
- 手动刷新:需要人工调用接口 读取配置文件步骤如下:
##将所有接口开放
management:
endpoints:
web:
exposure:
include: "*"
3. 调用actuator/refresh 必须是post请求才可以
4. 最后加上一个注解@RefreshScope在要读取git上文件的类上面就可以了。
2. 消息总线自动刷新
1. 这个刷新方式以后会写上的。
- SpringCloudConfig设计原理分析
就是在git上拉取信息到ConfigServer这个服务器中,然后将客户端拉取服务器中的配置信息。