Spring Cloud Config 分布式配置中心

  分布式架构的配置问题
在分布式微服务架构中,由于服务数量很多 ,使得有很多配置文件,在更新配置文件时很麻烦。
我们每个微服务自已带着一个 application.yml ,上百个配置文件的管理起来就很麻烦,所以一套集中式的、动态 的配置管理功能是必不可少的,在Spring Cloud 中,有分布式配置中心组件 Spring Cloud Config 来解决这个问题
Spring Cloud Config 概述
什么是 Spring Cloud Config
Spring Cloud Config 为微服务架构中的微服务提供 集中式的外部配置支持, 配置服务器为 各个不同微服务 应用 的所有环境提供了一个 中心化的外部配置
Spring Cloud Config 分为 服务端与客户端 两个部分:
服务端 config server
也称为 分布式配置中心,它是一个独立的微服务应用 ,用来连接配置服务器并为客户端提供获取配置信息,加密、解密信息等访问接口。
配置服务器官方推荐采用 Git 来存储配置信息,这样就有助于对环境配置进行版本管理,并且可通过 Git客户端工具来方便的管理与访问配置信息。
客户端 config client
通过指定的服务端来管理服务的资源,以及与业务相关的配置内容,并在启动的时候从服务端获取和加载配置信息。
作用
集中管理配置文件
不同环境不同配置,动态化的配置更新,根据不同环境部署,如 dev/test/prod运行期间动态调整配置,不再需要在每个服务部署的机器上编写配置,服务会向配置中心统一拉取自已的配置信息当配置发生变动时,服务不需要重启即可感知到配置的变化并使用修改后的配置信息将配置信息以REST 接口的形式暴露
GitHub 整合配置信息
由于 Spring Cloud Config 官方推荐使用 Git 来管理配置文件(也可支持其他方式,如: SVN 和本地文件),而且使用https/http 访问的形式。
Spring Cloud Config 服务端配置
         创建配置文件与提交 Github
                登录 GitHub ,新建一个 microservice - cloud - config 仓库
注册: https://github.com/join?source=experiment-header-dropdowns-home
登录: https://github.com/login
新建仓库 : https://github.com
2. 拷贝 https git 仓库地址:
https://github.com/XXXXXX/microservice-cloud-config.git
克隆远程库到本地仓库
本地库路径: D:\gitStudy\SpringCloud
git 命令: git clone https://github.com/XXXXXXXX/microservice - cloud - config.git
. D:\gitStudy\SpringCloud\microservice-cloud-config
新建一个 microservice - config - application.yml
配置内容如下( 选择 UTF-8 编码保存文件
选择 UTF-8 编码保存文件
application.yml 推送到 github 远程库
推送远程库会弹出提示登录 github
查看 Github 仓库中的效果
新建 Config 服务端模块 ( 配置中心 )
        创建 microservice-cloud-11-config-server-5001 模块
配置 pom.xml 文件
添加配置
完整配置
配置 application.yml 文件
创建启动类与添加注解 @EnableConfigServer
配置读取规则
参考 : https://cloud.spring.io/spring-cloud-static/Finchley.SR2/single/spring-cloud.html #_quick_start
测试 Config 配置中心是否可以从 GitHub 上获取配置信息
启动 Config 配置中心服务 5001
访问测试配置( dev ): http://localhost:5001/microservice-config-application-dev.yml
访问正式配置( prod ): http://localhost:5001/microservice-config-application-prod.yml
访问 不存在 配置: http://localhost:5001/microservice-config-application-test.yml
Spring Cloud Config 客户端服务
新建 Config 客户端模块
创建模块: microservice-cloud-12-config-client-8080
配置 pom.xml 文件
配置 bootstrap.yml
application.yml 是用户级别的配置项
bootstrap.yml 是系统级别的配置项, 优先级更高
Spring Cloud 会创建一个 Bootstrap Context Bootstrap Context 会负责从外部资源加载配置属性并解析
配置; Bootstrap 属性有高优先级,默认情况下,它们不会被本地配置覆盖。
在类路径 resources 下创建 bootstrap.yml 配置文件 , 内容如下:
上面配置的读取配置文件相关配置
配置 application.yml
在类路径 resources 下创建 application.yml ,内容如下
读取 GitHub 上的配置信息
新建 ConfigClient 类,通过 Rest 方式验证是否能够读取到 GitHub 上的配置信息
通过 @Value("key ") 绑定 GitHub 中对应配置中的 key 所对应的 value 值。
创建启动类
功能测试
  启动 Config 配置中心 config-server-5001 并自测: http://localhost:5001/application-dev.yml
启动 Config 客户端 config-client-8080
访问 http://localhost:8080/config , 访问不到。
上面访问不到,是因为 bootstrap.yml 中的 profile 值是什么,决定从 GitHub 上读取什么配置信息上
 当 profile: prod
prod GitHub 配置中对应端口号为 4002
访问路径: http://localhost:4002/config
profile: dev
dev GitHub 配置中对应端口号为 4001
所以访问: http://localhost:4001/config
成功实现 Config 客户端 去访问 Config 配置服务中心,从而通过 GitHub 获取到配置信息
Spring Cloud Config 配置实战
需求分析
将创建一个 Eureka 服务与 Product 商品提供者服务,它们两个微服务的配置信息均从 GitHub 获取 ,从而实现统一配置分布式管理,完成多环境的变量。
需求实战步骤
         编辑 Eureka 配置并提交远程库
D:\gitStudy\SpringCloud\microservice - cloud - config 目录下
新建 microservice - config - eureka.yml 文件 , 内容如下:
profile: dev 禁用了自我保护机制 , profile: prod 开启了自我保护机制
application.yml 推送到 github 远程库
编辑 Product 配置并提交远程库
  D:\gitStudy\SpringCloud\microservice - cloud - config 目录下
新建 microservice - config - product.yml 文件 , 内容如下:
不同环境 数据名不一样, dev 数据库使用 springcloud_db01, prod 数据库使用 springcloud_db02
application.yml 推送到 github 远程库
构建 Config 版的 Eureka 服务端
新建模块 microservice-cloud-13-eureka-config-6001
配置 pom.xml 文件
resources 目录下创建并配置 bootstrap.yml 文件
resources 目录下创建并配置 application.yml
创建启动类 EurekaServer_Config_6001
标识注解: @EnableEurekaServer
功能测试
先启动 Config 配置中心 : microservice-cloud-11-config-server-5001
再启动 Eureka 注册中心 : microservice-cloud-13-eureka-config-6001
访问: http://eureka6001.com:6001/
根据 bootstrap.yml 文件中的 profile: dev, 所以是禁止了自我保护机制
构建 Config 版的 Product 微服务
参考 microservice-cloud-03-provider-product-8001
新建 microservice - cloud - 14 - product - config - 8001 工程
配置 pom.xml 文件
resources 目录下创建并配置 bootstrap.yml 文件
resources 目录下创建并配置 application.yml 文件
创建启动类
标识注解: @EnableEurekaClient
拷贝 microservice-cloud-03-provider-product-8001 里的其他业务逻辑代码与 MyBatis 相关配置文件
  功能测试
先启动 Config 配置中心 microservice-cloud-11-config-server-5001
再启动 Eureka 注册中心: microservice-cloud-13-eureka-config-6001
再启动 商品提供者: microservice-cloud-14-product-config-8001
访问: http://localhost:8001/product/get/1
根据 bootstrap.yml 文件中的 profile: dev ,所以查询结果中显示的库名为 springcloud_db01
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JAVA代码搬运工

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值