Spring-Cloud-Config快速开始

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端集中管理配置,所以服务的可靠性很重要;

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,839评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,543评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,116评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,371评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,384评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,111评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,416评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,053评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,558评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,007评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,117评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,756评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,324评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,315评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,539评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,578评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,877评论 2 345

推荐阅读更多精彩内容