Spring-cloud微服务实战【九】:分布式配置中心config

  回忆一下,在前面的文章中,我们使用了spring cloud eureka/ribbon/feign/hystrix/zuul搭建了一个完整的微服务系统,不管是队内还是对外都已经比较完善了,那我们的系统是否还有值得继续优化的地方呢?答案肯定是有的,那就是分布式配置中心config.那什么是分布式配置中心,我们为什么又需要分布式配置中心呢?

什么是分布式配置中心?

  所谓配置中心,就是将配置的数据放在某种存储介质中,该介质可以是文件/数据库/中间件等等,像业界常用的zookeeper/Apollo/阿里开源的Nacos等等,阿里内部使用的config server/diamond/switch等等都是分布式配置中心.而在spring cloud中的分布式配置中心就是config.

为什么需要分布式配置中心?

  一个完整的微服务系统,在实际的生产环境中会有许多的服务,每个服务都有自己的配置文件,这些服务在自己的测试环境上管理自己的配置文件还好,但所有服务一旦到了生产环境,配置文件太多,对配置文件的管理就成了一个必不可少的工作,因此,我们需要分布式配置中心来帮助我们进行配置文件的管理.

spring cloud config使用

  spring cloud和eureka类似,也分为服务端和客户端,服务的主要是对配置文件进行管理,而客户端拉取服务端的配置文件,另外,我们之前说配置中心依赖于某种存储介质,springcloud官方文档中是使用git,因此我们还需要依赖git,首先我们在git创建一个专门存放配置文件的仓库:

file

  可以看到,我们使用的是yml,而在之前的文章中,我们一直使用的是properties配置文件,springboot中这两者都可以,spring官方更推荐使用yml,因此我们使用config的时候,会全部替换为yml文件.
  新增一个spring cloud config的服务端module:

file

  老规矩,先加入父项目:

file

  然后配置maven依赖:
file

  我们的config-server也需要进行安全验证,因此也使用了security,接下来配置文件:
file

  其中最重要的就是配置了git的地址,告诉config-server,从哪里去读取配置文件.然后启动类新增支持config-server的注解:
file

  然后启动config-server:
file

  可以看到,我们成功访问到了git上的配置文件,另外地址栏中的URL遵循如下规则:

file

  其中,application指的是配置文件的文件名,profile是配置文件的激活的版本,label是git的分支版本,默认为master.

  接下来,我们改造eureka-server,从git上读取配置文件.首先需要上传相应的配置文件:

file

file

file

file

  可以看到test和product的主要区别是端口号和应用名以及验证信息不同,稍后我们会验证一下,接下来,我们复制一份[dhp-micro-eureka-server]到新的module[dhp-micro-eureka-server-config],用于从git读取并加载配置:
file

  可以看出,我们删除了之前的配置文件,转而使用了bootstrap.yml文件,有的同学会问,bootstrap.yml是什么文件?这是springboot的约定,我们说springboot是约定大于配置,springboot约定系统级相关的配置放到bootstrap.yml中,而application.yml进行应用级的配置,我们来看看bootstrap.yml的内容:
file

  主要就是设置配置文件的获取地址,以及获取的文件名以及profile/label(分支名)/账号密码等信息,配置后启动可以看到:

file

  可以看到,控制台打印的第一句就是告诉我们从localhost:7101获取配置,启动成功后启动producer服务看一下:

file

  可以看到,我们的producer服务已经注册到eureka-server了,说明我们的config已经生效了,同理我们也可以替换consumer/user/producer服务的配置文件为git配置文件,这里我们就不一一演示了,感兴趣的童鞋们可以自己去操作试一下.另外,由于改造后的所有服务都是从config-server获取配置文件,假如config-server挂了,那整个微服务就无法启动了,因此config-server也需要考虑高可用,因此我们可以把config-server注册到eureka-server中,保证config-server的高可用,注意,这里的eureka-server和producer等业务微服务注册的eureka-server是不同的,这个eureka-server仅仅只注册config-server一个,这就能保证config-server的高可用了.

  自此,我们的分布式配置中心config已经成功了,思考一下,目前的config-server是否有什么问题?这就是我们下一篇文章的内容,下一篇文章,我们会介绍spring cloud最后一块拼图,spring cloud消息总线,敬请期待!

  本文的GitHub地址:

本文由博客一文多发平台 OpenWrite 发布!

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

推荐阅读更多精彩内容