Spring-Cloud-Config简介

Spring-Cloud-Config是Sping-Cloud下用于分布式配置管理的组件,分成了两个角色Config-Server和Config-Client;Config-Server端集中式存储/管理配置文件,并对外提供接口方便Config-Client访问,接口使用HTTP的方式对外提供访问;Config-Client通过接口获取配置文件,然后可以在应用中使用;Config-Server存储/管理的配置文件可以来自本地文件,远程Git仓库以及远程Svn仓库;

Config-Server端

1.Config-Server依赖

注:2.0以后的版本需要jdk1.8及以上版本

2.准备被管理的配置文件

Spring-Cloud-Config提供了对多种环境配置文件的支持,比如:开发环境,测试环境,生产环境等;为了更加全面的模拟,准备三个配置分别如下:

分别是开发,测试以及生产的配置文件,内容也比较简单如下所示:

3.准备启动配置文件

被管理的配置文件可以来自多个地方,包括:本地文件,远程Git仓库以及远程Svn仓库,下面分别在resources/application.properties中做配置;

3.1本地文件

指定了server端启动端口为8888,文件来自E:/github/spring-cloud-config-repo,以上三个文件放在此目录下

3.2远程Git仓库

spring.profiles.active默认值是git,git.uri指定地址,git仓库default-label默认值是master;

3.3远程svn仓库

配置了svn的用户名和密码,svn仓库default-label默认值是trunk,因为此处自建的svn服务器default-label为空,所以设置为空值即可;

4.准备启动类

@EnableConfigServer启动配置服务器;

5.测试

不管使用以上的哪种方式配置,都可以通过使用http的方式访问,http可以有以下几种方式请求资源:

application本实例中对应config;profile表示使用哪种环境的配置文件,这里可以是dev,test,pro;label可选的标签,git仓库默认值master,svn仓库默认值是trunk;

5.1请求http://localhost:8888/config/dev/master,结果如下:

返回结果包含了详细的信息,最后的source里面是配置文件内容;

5.2请求http://localhost:8888/config-dev.yml,结果如下:

此种方式访问仅显示配置文件内容,同样properties后缀的也仅显示配置文件内容,只是显示的格式不一样;

5.3更新git上文件内容,请求http://localhost:8888/config-dev.yml,结果如下:

获取到了最新的内容,其实每次在请求的时候都会去远程仓库中更新一下数据,日志如下:

把数据更新到本地的Temp路径下;

Config-Client端

1.Config-Client依赖

2.启动配置文件

在配置文件resources/bootstrap.properties中做如下配置:

spring.application.name:对应{application},本实例中是config;

spring.cloud.config.label:对应{label},指定server端配置的分支,此处填master即可;

spring.cloud.config.profile:对应{profile},指定client当前的环境,可选值:dev,test,pro;

spring.cloud.config.uri:server端地址;

server.port:client启动端口;

3.准备测试类

访问地址:http://localhost:8889/hello,返回结果如下:

关于Spring-Cloud-Config配置的更新

1.Client端初始化配置文件

Client端在启动的时候,可以发现Server端有拉取配置文件的日志:

2.Server端数据更新,Client如何更新

更新git中config-test.properties,请求http://localhost:8888/config-test.yml,结果如下:

Client请求http://localhost:8889/hello,结果如下:

可以发现Server端已经更新,但是Client端没有获取到最新的数据,还是使用的缓存的老数据;

Spring-Cloud-Config提供了多种刷新机制,下面看一下最简单手动刷新:

2.1引入依赖

2.2暴露全部endpoints

在bootstrap.properties中添加

2.3.修改HelloController

@RefreshScope在手动执行刷新的时候会更新此变量

2.4.启动

观察启动日志,其中有一条映射如下:

/actuator/refresh提供了手动刷新的功能,并且必须使用POST方式;

2.5.测试

访问地址:http://localhost:8889/hello,返回结果如下:

更新git上的配置文件,配置值为foo=hello test update;

访问地址:http://localhost:8889/hello,返回结果如下:

执行手动刷新操作:

访问地址:http://localhost:8889/hello,返回结果如下:

3.如何自动更新

在生产环境下不可能每次都去手动触发refresh,github提供了webhook功能,当某个事件发生时,通过发送http的方式告诉接收方,这样就可以在接收到事件的时候触发refresh请求;

几个待分析问题

1.多个Client节点如何更新

正常情况下Client会有很多个节点,而且节点会出现上线和下线,如何同时通知每个节点,Spring-Cloud-Config提供了Spring Cloud Bus来批量处理;

2.更新机制

在执行refresh的时候,只会把变动的参数发送给Client端,没有变动的不会发送,节约了流量;但是如果配置文件被多个不同的Client使用,是否会出现不相干的参数会发送给每个Client;

3.多配置文件的支持

Server可以同时加载多个配置文件,Client也可以支持多个配置文件;

4.Server端如何保证数据的可靠性

Server端集中管理配置,所以服务的可靠性很重要;

Spring-Cloud-Config快速开始相关推荐

  1. Spring Cloud Config教程(四)快速开始

    Spring Cloud Config为分布式系统中的外部配置提供服务器和客户端支持.使用Config Server,您可以在所有环境中管理应用程序的外部属性.客户端和服务器上的概念映射与Spring ...

  2. spring cloud连载第二篇之Spring Cloud Config

    Spring Cloud Config Spring Cloud Config为分布式服务提供了服务侧和客户侧的外部配置支持.通过Spring Cloud Config你可以有一个统一的地方来管理所有 ...

  3. spring cloud config将配置存储在数据库中

    点击上方"方志朋",选择"置顶或者星标" 你的关注意义重大! Spring Cloud Config Server最常见是将配置文件放在本地或者远程Git仓库, ...

  4. Spring Cloud Config 集中式配置

    2019独角兽企业重金招聘Python工程师标准>>> 本指南通过Spring cloud config服务器引导你建立和消费配置. 你要构建什么? 你需要设置一个config服务器 ...

  5. Spring Cloud Config采用数据库存储配置内容

    在之前的<Spring Cloud构建微服务架构:分布式配置中心>一文中,我们介绍的Spring Cloud Server配置中心采用了Git的方式进行配置信息存储.这一设计巧妙的利用Gi ...

  6. spring cloud config将配置存储在数据库中 1

    转载请标明出处: https://blog.csdn.net/forezp/... 本文出自方志朋的博客 Spring Cloud Config Server最常见是将配置文件放在本地或者远程Git仓 ...

  7. 聊聊 Spring Cloud Config

    一般服务器的应用都有以下几种类型, 其中当属业务部分最多也最繁杂. 当应用越来越庞大和复杂时,单机就肯定不能满足需求了,然后就要考虑分布式了,接下可能会应用不同的语言来开发应用. 比如 nginx 毫 ...

  8. Spring Cloud Config统一管理微服务配置

    一Spring Cloud Config背景及简介 # 集中管理的需求:一个使用微服务架构的应用系统可能会包括成百上千个微服务,因此集中管理很有必要 # 不同环境不同配置:例如数据源在不同的环境(开发 ...

  9. 《深入理解 Spring Cloud 与微服务构建》第十三章 配置中心 Spring Cloud Config

    <深入理解 Spring Cloud 与微服务构建>第十三章 配置中心 Spring Cloud Config 文章目录 <深入理解 Spring Cloud 与微服务构建>第 ...

  10. spring boot 2.0.3+spring cloud (Finchley)6、配置中心Spring Cloud Config

    https://www.cnblogs.com/cralor/p/9239976.html Spring Cloud Config 是用来为分布式系统中的基础设施和微服务应用提供集中化的外部配置支持, ...

最新文章

  1. sklearn逻辑回归 极大似然 损失_收藏!攻克目标检测难点秘籍二,非极大值抑制与回归损失优化之路...
  2. Vue.js-Day01-AM【第一次学习-安装、基础使用(引入方式)、数据展示、指令介绍(v-html、v-text、v-bind、v-if、v-for】
  3. 【asp.net Core MVC + angular6实战】 - 1. 环境搭建
  4. 三维图形几何变换算法实验_计算机视觉方向简介 | 深度学习视觉三维重建
  5. python与excel-Python和Excel终于可以
  6. Guava RateLimiter 实现 API 限流,这才是正确的姿势!
  7. 190102每日一句
  8. 毕业论文 | 文献综述应该怎么写
  9. Android webview 下载文件(文件名,扩展名)
  10. 游戏数据分析-玩家战力分析
  11. 缺陷报告.定义,报告,核心要素
  12. 【项目工程】利用安卓手机NFC功能和KPC物联网仿真平台的智能花盆设计
  13. 部门来了个测试工程师,一副小毛孩样,本以为很菜,谁想到...
  14. Cesium之地形(1)
  15. 中图杯获奖作品计算机组,高教杯”全国大学生先进成图技术与产品信息建模创新大赛试题资料.doc...
  16. 声声入耳:音频新体验
  17. 基金训练营学习笔记3-股票基金
  18. 5星|《上帝的手术刀》:人类编辑自身基因的技术与商业过程。
  19. SqlServer2012卸载并重新安装成功完整过程!真的超级激动...
  20. 502 IPO 上市

热门文章

  1. 爬虫:b站(bilibili)电影《鹰猎长空》短评
  2. svd分解 复原 sklearn和numpy实现
  3. 收藏不看系列!7大免费资源网站,日后再也不求人
  4. 家族企业的优势、劣势分析
  5. Linux:Ubuntu如何恢复被删除的文件
  6. jquery---元素的隐藏与展示
  7. cocos creator 3.7微信小游戏开发云函数和云托管部署
  8. 2022年金属非金属矿山(露天矿山)主要负责人上岗证题库及模拟考试
  9. 计算机毕业设计Java搬家预约系统(源码+系统+mysql数据库+lw文档)
  10. 显卡类型: 集成显卡 独立显卡 核芯显卡有什么区别