以下部分纯属个人理解,但是结果都是经过demo验证。

一、spring cloud config介绍

  spring cloud是spring家族中的一个微服务工具包,其中包含了很多微服务的工具。偏向于与spring boot类似的配置方式,有许多许多默认配置。spring cloud config是其中的一个工具包,用于配置的拉取更新。

  举一个小小的例子,当我们程序中有一个配置文件需要修改,但是服务已经启动,配置文件中的配置已经读取到内存中,为了修改配置,我们需要重启服务;如果是一台或者几台机器重启,还算容易,但是如果是一个集群,重启就变成一个非常耗时的工作;如果我们使用spring cloud config,就可以在服务运行时,拉取git(svn等,下面以git为例)的配置,修改内存中的配置。

二、spring cloud config逻辑介绍

  config-server:提供对git的连接,配置拉取,这里的拉取是被动拉取。

  config-client:连接config-server,通过URI请求对应的配置文件,获取配置属性

  如图表示client从server拉取配置的过程:

  

  1、client根据配置向server发送配置请求

  2、server根据配置从git拉取所有文件(git clone的过程)

  3、git将整个仓库下发

  4、server解析client的URI请求,返回相应的配置属性或者错误信息(不存在相应的配置属性)

  如图表示client发送刷新配置请求的过程:

  1、client向server发送refresh请求

  2、server向从git更新本地配置(git pull)

  3、git下发更新

  4、server对比更新,发现client需要的配置有更新时,会将更新信息发给client

理解:1、在client第一次向server发送URI请求时,server会根据配置的git地址,拉取对应仓库的所有文件(与git clone@{git adress})(在config-server本地/tmp目录下可以找到git本地仓库);

   2、值得注意的是,在client发送刷新配置请求(refresh)时,server会根据本地仓库的情况处理:

     (1)如果server本地仓库有未提交的commit和未commit的修改时,server就不会从git上拉取更新(不会git pull),只会将本地仓库中对应的配置属性传给client;

     (2)如果server本地仓库没有任何修改和commit,server会从git上拉取更新(git pull),然后将本地仓库对应的配置属性传给client。

   3、还有一个坑点,我在demo测试过程中发现,如果git仓库过大,拉取过程很长,在server拉取的时候会出错(有一个最大等待时长,超过会出现超时错误)。为了实现大的二进制文件的正常拉取,可以切到本地仓库地址,手动拉取一次更新。

     (1)在创建本地仓库时就采用手动拉取的方式:在配置文件application.properties中,设置git的url地址为本地文件地址,初始化时,手动git clone远程仓库地址到设置的本地文件地址。在更新配置的时候,config-server也会自动从远程拉取更新。

     (2)如果是更新的时候有大文件的修改导致不能拉取更新:application.properties配置文件中git的url为远程仓库地址,初始化时能够自动拉取,如果有大文件更新,利用git工具,手动切到本地/tmp目录下,利用git命令手动拉取更新就可以拉取大文件的更新,在之后的小文件更新中,config-server就能够正常自动更新。

总之就是,client向server发送一个URI请求:“我要**属性,你那里有吗?”,然后server根据自身的配置,拉取git仓库,然后去找client需要的那个属性,然后告诉client:“我这里有(没有)这个属性,(有就给client)”;刷新过程就是,client向server发送一个URI请求:“我请求的属性值变了吗?”,然后server处理之后,回复client:“变了,这是新的值。(没变)”。

三、配置文件介绍

1、client配置文件如下:

spring.application.name = test                              1
spring.cloud.config.lable = master                          2
spring.cloud.config.profile = dev                           3
spring.cloud.config.uri = http://localhost:8881/           4

解释:1和3组成了访问的配置文件名,如test-dev.properties

   2决定了git的分支,此处为master分支

   4表示config-server的地址

请求的URI就是由这个配置决定的,网上关于这点的说明很多,此处不再赘述

2、server配置文件如下:

spring.cloud.config.server.git.uri = https://github.com/lucknot/songxh_scse/    1
spring.cloud.config.server.git.searchPaths = test                    2

解释:1表示git仓库的地址,这里是我的github仓库地址(并没有干货)

   2表示配置搜索的文件夹,在client请求配置时,只会在这个文件夹下进行搜索

事实上将1和2拼接在一起就组成了搜索配置属性的URL地址。

针对配置文件需要说明以下,label表示的分支只与client的配置相关:client中配置的是哪个分支就取哪个分支的配置

ps:在写这篇博客的时候突然想到一个问题,client在像server请求时是否只是请求需要的属性的值,还是请求对应的属性文件。个人感觉是取对应文件名的配置文件,在client拿到配置文件后再将读取对应的属性,与spring boot中从配置文件中读取属性类似(事实上就是两个上下文,spring cloud的上下文有高优先级)。

转载于:https://www.cnblogs.com/songxh-scse/p/7406641.html

对spring cloud config的一点理解相关推荐

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

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

  2. Spring Cloud Config服务端配置细节(二)之加密解密

    在微服务架构中,由于独立的服务个数众多,加上前期测试工作量大,一些原本由运维人员维护的敏感信息会被我们直接写在微服务中,以提高开发效率,但是这种明文存储方式显然是非常危险的,所以我们要对这些信息进行加 ...

  3. spring cloud config笔记

    spring cloud config 官网的spring cloud config文档:Spring Cloud Config server端 server端主要读取远程源的配置信息到本地,然后给后 ...

  4. Spring Cloud Config Server简介

    1.概述 在本教程中,我们将回顾Spring Cloud Config Server的基础知识. 我们将设置一个Config Server ,然后构建一个客户端应用程序 ,该客户端应用程序在启动时会消 ...

  5. Spring Cloud Config服务端配置细节(一)

    上篇文章我们看了Spring Cloud中分布式配置中心的一个基本使用,这里边还涉及到许多细节,本文我们就来看看服务端配置中的一些细节. 本文是Spring Cloud系列的第二十三篇文章,了解前二十 ...

  6. Spring Cloud Config的配置中心获取不到最新配置信息的问题

    本篇源于Spring Cloud Config的一个问题,但这个问题并非所有人都会遇到.如果您遇到了,那必须得看看这篇,如果没有遇到您也应该看看,防患于未然! 问题描述 之前有朋友提出Spring C ...

  7. Spring Cloud Config 配置中心实践过程中,你需要了解这些细节!

    本文导读: Spring Cloud Config 基本概念 Spring Cloud Config 客户端加载流程 Spring Cloud Config 基于消息总线配置 Spring Cloud ...

  8. Spring Cloud Config 客户端启动错误(Fetching config from server at : http://12)

    Spring Cloud Config 客户端启动错误(Fetching config from server at : http://12) FAQ Java HotSpot(TM) 64-Bit ...

  9. 【SpringCloud】四、Spring Cloud Config

    Spring Cloud Config 前言 一.什么是配置中心 1. 为什么需要分布式配置中心 2.常用分布式配置中心框架 二.什么是Spring Cloud Config? 1.Springclo ...

最新文章

  1. R语言format函数保留几位小数实战
  2. Handler消息机制(二):一个线程有几个Handler
  3. 值得关注的未来技术,增强现实
  4. Base64加密解密算法的C/C++代码实现
  5. JavaScript学习笔记(7)PC端网页特效(略)
  6. 机器学习问题方法总结
  7. jzoj5363-[NOIP2017提高A组模拟9.14]生命之树【启发式合并,Trie】
  8. 模块pdf2image.dll加载失败_Webpack 原理从前端模块化开始
  9. flyway版本号_Flyway版本化管理数据库脚本
  10. 使用Navicat计划任务备份数据库
  11. C#中的高级测试驱动开发
  12. c语言免疫算法,人工免疫算法的全局收敛性分析
  13. CAD填充技巧:填充图案
  14. 微pe工具箱 系统安装教程_通用PE工具箱装系统(V4.0)——安装原版WIN7系统
  15. Thinking in java 第21章 并发 wait() 与 notifyAll()
  16. PTA 7-3 愿天下有情人都是失散多年的兄妹 (25 分)
  17. 读书笔记2014第11本:历史上最伟大的10个方程
  18. 问题 A: 循环吧,太一!
  19. narwal机器人_Narwal云鲸智能扫拖机器人,会自己洗拖布
  20. 87金融汇:如何理性看待互联网理财收益波动

热门文章

  1. 固态硬盘uefi装win10
  2. 图像添加Beta分布噪声
  3. 循环相关函数range、enumerate、zip
  4. 鼠标移动区域局部放大
  5. 嫦娥奔月(KMP,找循环节)及其扩展KMP
  6. linux升级Python2.7.12
  7. nginx相关知识点
  8. javascript原型对象、原型链、构造函数
  9. 注解的方式实现动态代理基于SpringAOP
  10. A Complete List of .NET Open Source Developer Projects