SpringCloud之Config(分布式配置中心)
一.SpringCloud config是什么?
简单来说,Spring Cloud Config
就是能将各个 应用/系统/模块 的配置文件存放到统一的地方然后进行管理(Git 或者 SVN),客户端通过接口去获取这些配置文件。
SpringCloud config 为微服务架构中的微服务提供集中化的外部配置支持,
配置服务器为各个不同微服务应用的所有环境提供了一个中心化的外部配置
二.SpringCloud config怎么用?
SpringCloud config 分服务端(Server)和客户端(Client)两部分
1.server提供配置文件的存储、以接口的形式将配置文件的内容提供出去
2.client通过接口获取数据、并依据此数据初始化自己的应用
三.配置中心的作用和好处
//统一管理配置, 快速切换各个环境的配置
在微服务体系中,服务的数量以及配置信息的日益增多,比如各种服务器参数配置、各种数据库访问参数配置、
各种环境下 配置信息的不同、配置信息修改之后实时生效等等,
传统的配置文件方式或者将配置信息存放于数据库中的方式已无法满足开发人员对配置管理的要求,如:
安全性:配置跟随源代码保存在代码库中,容易造成配置泄漏
时效性:修改配置,需要重启服务才能生效
局限性:无法支持动态调整:例如日志开关、功能开关
//Springcloud提供了config组件来解决这种问题
四.搭建config-server项目
步骤:
1.使用Spring Initializr创建SpringBoot项目
2.在启动类中贴上@EnableConfigServer注解
3.添加application.yml并设置相关的配置
4.在码云master分支上新建配置文件order-dev.yml
5.在码云xiaoliu分支上新建配置文件order-dev.yml
6.启动启动类
7.测试:http://localhost:7000/order-dev.yml
:http://localhost:7000/master/order-dev.yml
请求路径读取规则:/{label}/{application}-{profile}.yml
label:git 分支
application: 配置文件名,一般是服务名
profile: 环境 dev test prod等
application.yml配置文件
server:
port: 7000
spring:
application:
name: config-server #服务名
cloud:
config:
server:
git:
#在gitee中新建的仓库路径,注意是地址栏上的(克隆下来即可)
uri: https://gitee.com/xxx/cloud-config
#码云账号
username: wangyifei@qq.com
#码云账号秘密
password: 123456
label: master
eureka:
client:
#是否将自己注册进去eureka,false为不注册,true注册
registerWithEureka: true
#是否从eureka抓取注册信息,单点无所谓,集群必须设置为true才能配合ribbon使用负载均衡
fetchRegistry: true
serviceUrl:
defaultZone: http://localhost:8761/eureka/
五.分布式配置中心客户端
步骤:
1.在cloud-consumer-order8090中添加config-client的依赖
添加客户端的依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-client</artifactId>
</dependency>
2.修改对应服务的配置文件,把application.yml 改为 bootstrap.yml
3.把其他配置都放入到git服务器期中管理 (修改码云上master分支的order-dev.yml)
bootstrap.yml配置
spring:
application:
name: order-server
cloud:
config:
label: master #分支名称
name: order #配置文件名称
profile: dev #读取后缀名称:
uri: http://localhost:7000
#上述4个综合: http://localhost:7000/master/order-dev.yml
eureka:
client:
#是否将自己注册进去eureka,false为不注册,true注册
registerWithEureka: true
#是否从eureka抓取注册信息,单点无所谓,集群必须设置为true才能配合ribbon使用负载均衡
fetchRegistry: true
serviceUrl:
defaultZone: http://localhost:8761/eureka/
六.更新码云上配置,服务动态更新配置:Bus数据总线+RocketMQ消息中间件
七.小结
1.Spring Cloud Config就是将配置文件放到统一的位置管理(比如GitHub),客户端通过接口去获取这些配置文件
2.Spring Cloud Config分为服务端和客户端,服务端主要用于存储配置文件,提供接口,
客户端通过提供的接口获取配置文件数据,并通过此数据初始化当前应用
3.要将Client 模块下的application.yml 改成bootstrap.yml,这是很关键的,
因为bootstrap.yml是比application.yml先加载的,bootstrap.yml优先级高于application.yml
4.Config能统一管理配置,修改了配置文件,希望不用重启来动态刷新配置,配合Spring Cloud Bus 使用
5.服务端需要配置好远程仓库的地址 账号 和密码,并在远程仓库将配置文件建好