分布式配置中心:Spring Cloud Config

  Spring Cloud Config是Spring Cloud团队创建的一个全新的项目,用来为分布式系统中的基础设施和微服务应用提供集中化的外部配置支持,它分为服务端和客户端两个部分。其中服务端也称为分布式配置中心,它是一个独立的微服务应用,用来连接配置仓库并为客户端提供获取配置信息、加密/解密信息等访问接口;而客户端则是微服务架构中的各个微服务应用或基础设施,他们通过指定的配置中心来管理应用资源与业务相关的配置内容,并在启动的时候从配置中心获取和加载配置信息。Spring Cloud Config实现了对服务端和客户端中环境变量和属性配置的抽象映射,所以它除了适用于Spring构建的应用程序之外,也可以在任何其他语言运行的应用程序中使用。由于Spring Cloud Config实现的配置中心默认采用Git来储存配置信息,所以使用Spring Cloud Config构建的配置服务器,天然就支持对微服务应用配置信息的版本管理,并且可以通过Git客户端工具来方便地管理和访问配置内容。当然它也提供了对其他存储方式的支持,比如SVN仓库、本地化文件系统等。

服务端搭建

1. 创建maven工程,骨架选择quickstart,名称为:demo-config-server

2.  加入相关依赖:

3. 创建启动类:

4. 在src\main\resources目录下创建application.yml文件:

  • spring.cloud.config.server.git.uri:配置Git仓库位置。
  • spring.cloud.config.server.git.search-paths:配置仓库路径下的相对搜索位置,可以配置多个。
  • spring.cloud.config.server.git.username:访问Git仓库的用户名。
  • spring.cloud.config.server.git.password:访问Git仓库的用户密码。

  注:由于git项目是公开的,所以不用提供用户名和密码也可以。

5. 登录Git,在demo-springcloud/目录下创建config-repo文件夹,并新建4个配置文件:

6. 配置文件的内容分别如下,为了测试版本控制,在该Git仓库的master分支中,为form属性加入1.0的后缀,同时创建一个config-label-test分支,并将个配置文件中的值用2.0作为后缀:

7. 启动项目,可以通过如下几种方式访问配置内容,其中application为配置文件的前缀,这里就是application;profile为配置文件的后缀,这里是dev、pro和test;label代表Git分支名称:

  • /{application}/{profile}[label]
  • /{application}-{profile}.yml
  • /{label}/{application}-{profile}.yml
  • /{application}-{profile}.properties
  • /{label}/{application}-{profile}.properties

  例如访问http://localhost:8001/application/dev/config-label-test得到如下内容:

8. 同时,观察demo-config-server项目的控制台,发现输出了如下内容:

9. 配置服务器在从Git中获取配置信息后,会存储一份在demo-config-server的文件系统中,实质上demo-config-server是通过git clone命令将配置内容复制了一份在本地存储,然后读取这些内容并返回给微服务应用进行加载。通过Git在本地仓库暂存,可以有效的防止当Git仓库出现故障而引起无法加载配置信息的情况。可以断开网络,再次在浏览器发起上述请求,可以看到控制台的报错信息:Could not fetch remote for config-label-test remote,但是它依然会为该请求返回配置内容,这些内容源于之前访问时存于demo-config-server本地文件系统中的配置内容:

10. 根据控制台打印的路径,去到指定目录,发现下载下来的配置文件:

客户端搭建

1. 创建maven工程,骨架选择quickstart,名称为:demo-config-client

2. 加入相关依赖:

3. 创建启动类:

4. 在src/main/resources目录下创建bootstrap.properties文件(注:这些属性必须配置在bootstrap.properties中,这样demo-config-server中的配置信息才能被正确加载。Spring Boot对配置文件的加载顺序为,对于本应用jar包之外的配置文件加载会优先于应用jar包内的配置内容,而通过bootstrap.properties对demo-config-client的配置,使得该应用会从demo-config-server中获取一些外部配置信息,这些信息的优先级比本地的内容要高,从而实现了外部化配置):

  • spring.application.name:对应配置文件规则中的{application}部分。
  • spring.cloud.config.profile:对应配置文件规则中的{profile}部分。
  • spring.cloud.config.label:对应配置文件规则中的{label}部分。
  • spring.cloud.config.uri:配置中心demo-config-server的地址。

5. 创建一个RESTful接口来返回配置中心的from属性,启动项目并测试效果:

转载于:https://www.cnblogs.com/Oven5217/p/8856041.html

Spring Cloud学习笔记-010相关推荐

  1. Spring Cloud 学习笔记(四)-Spring Cloud Hystrix

    Spring Cloud 学习笔记(四)-Spring Cloud Hystrix 由于前一阵子项目的原因,今天才继续弄上,今天想学习一下Hystrix组件 这个组件还挺抽象的,最开始我一直没太明白, ...

  2. Spring Cloud 学习笔记(2 / 3)

    Spring Cloud 学习笔记(1 / 3) Spring Cloud 学习笔记(3 / 3) - - - 56_Hystrix之全局服务降级DefaultProperties 57_Hystri ...

  3. Spring Cloud 学习笔记(2 3)

    Spring Cloud 学习笔记(1 / 3) Spring Cloud 学习笔记(3 / 3) - - - 56_Hystrix之全局服务降级DefaultProperties 57_Hystri ...

  4. Spring Cloud 学习笔记(1 / 3)

    Spring Cloud 学习笔记(2 / 3) Spring Cloud 学习笔记(3 / 3) - - - 01_前言闲聊和课程说明 02_零基础微服务架构理论入门 03_第二季Boot和Clou ...

  5. Spring Cloud学习笔记—网关Spring Cloud Gateway官网教程实操练习

    Spring Cloud学习笔记-网关Spring Cloud Gateway官网教程实操练习 1.Spring Cloud Gateway介绍 2.在Spring Tool Suite4或者IDEA ...

  6. Spring Cloud学习笔记

    Spring Cloud学习笔记 相关代码地址:https://github.com/gongxings/spring-cloud-study.git 一.工程环境搭建 spring cloud版本: ...

  7. Spring Cloud学习笔记【十二】Hystrix的使用和了解

    Spring Cloud学习笔记[十二]Hystrix的使用和了解 Hystrix [hɪst'rɪks],中文含义是豪猪,因其背上长满棘刺,从而拥有了自我保护的能力.本文所说的Hystrix是Net ...

  8. Spring Cloud 学习笔记(3 3)

    Spring Cloud 学习笔记(1 / 3) Spring Cloud 学习笔记(2 / 3) - - - 108_Nacos之Linux版本安装 109_Nacos集群配置(上) 110_Nac ...

  9. Spring Cloud 学习笔记(3 / 3)

    Spring Cloud 学习笔记(1 / 3) Spring Cloud 学习笔记(2 / 3) - - - 108_Nacos之Linux版本安装 109_Nacos集群配置(上) 110_Nac ...

最新文章

  1. 花卉世界大观园和杂技之游
  2. 剑指offer 二进制1中的个数
  3. java对象关系映射ROM
  4. 转型产品经理该怎么做(适用于0-2岁的产品经理)
  5. WCF宿主与服务托管
  6. 初入c++(三)this指针,友元函数,友元类
  7. Arthas : 在线分析诊断工具Arthas(阿尔萨斯)
  8. hive中的日期转换函数
  9. flash builder 4.6在debug调试时需要系统安装flashplayer debug版本
  10. Set集合之HashSet添加的数据是如何保证不重复的
  11. t620服务器安装系统,请教高手Dell T620 服务器安装Ubuntu14.04LTS桌面版 非常慢 为什么?...
  12. 最通俗PLC教程—源自Koyo光洋PLC自学总结(2)
  13. 「Python编程规范」语句分隔符号
  14. emcy协议_商铺三方租赁协议合同范本
  15. 论文解读——神经网络翻译中的注意力机制 以及 global / local attention
  16. 【零基础学Python】Day9 Python推导式
  17. 浏览器主页被篡改解决方法
  18. 2017年总结(补全)
  19. 国产数据库人大金仓踩坑记录和函数适配
  20. 计算机毕业设计ssm论文管理系统

热门文章

  1. 《Java遗传算法编程》—— 1.5 生物进化
  2. json和jsonp(json是目的,jsonp是手段)
  3. CDN服务品质协议1
  4. SPP pooling layer
  5. 【Python-ML】神经网络-Theano张量库(GPU版的Numpy)
  6. Linux下查看在运行进程的命令
  7. 机器学习知识点(十九)矩阵特征值分解基础知识及Java实现
  8. htmlparser操作bean类提取html页面元素
  9. hive 行转列和列转行的方法_读离线和实时大数据开发实战,为你揭开 Hive 优化实践的神秘面纱...
  10. JQuery对象和JS对象区别与转换|| 事件绑定 入口函数 样式控制