回忆一下,在前面的文章中,我们使用了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创建一个专门存放配置文件的仓库:

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

  老规矩,先加入父项目:

  然后配置maven依赖:

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

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

  然后启动config-server:

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

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

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




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

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

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

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

  可以看到,我们的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 发布!

Spring-cloud微服务实战【九】:分布式配置中心config的更多相关文章

  1. Spring Cloud 微服务实战——nacos 服务注册中心搭建(附源码)

    作为微服务的基础功能之一的注册中心担任重要的角色.微服务将单体的服务拆分成不同的模块下的服务,而不同的模块的服务如果进行通信调用呢?这就需要服务注册与发现.本文将使用阿里开源项目 nacos 搭建服务 ...

  2. Spring Cloud微服务实战阅读笔记(一) 基础知识

    本文系<Spring Cloud微服务实战>作者:翟永超,一书的阅读笔记. 一:基础知识   1:什么是微服务架构     是一种架构设计风格,主旨是将一个原本独立的系统拆分成多个小型服务 ...

  3. Spring Cloud 微服务实战笔记

    Spring Cloud 微服务实战笔记 微服务知识 传统开发所有业务逻辑都在一个应用中, 开发,测试,部署随着需求增加会不断为单个项目增加不同业务模块:前端展现也不局限于html视图模板的形式,后端 ...

  4. spring cloud微服务实战教程/pdf/视频/百度云资源

    资源站:http://www.supan.vip 点击进入直接查找资源: http://www.supan.vip/spring%20cloud微服务实战 <Spring Cloud微服务实战& ...

  5. Spring Cloud学习笔记【九】配置中心Spring Cloud Config

    Spring Cloud Config 是 Spring Cloud 团队创建的一个全新项目,用来为分布式系统中的基础设施和微服务应用提供集中化的外部配置支持,它分为服务端与客户端两个部分.其中服务端 ...

  6. 一起来学Spring Cloud | 第七章:分布式配置中心(Spring Cloud Config)

    上一章节,我们讲解了服务网关zuul,本章节我们从git和本地两种存储配置信息的方式来讲解springcloud的分布式配置中心-Spring Cloud Config. 一.Spring Cloud ...

  7. Spring cloud微服务实战——基于OAUTH2.0统一认证授权的微服务基础架构

    https://blog.csdn.net/w1054993544/article/details/78932614

  8. Spring Cloud第十篇 | 分布式配置中心Config

    ​ 本文是Spring Cloud专栏的第十篇文章,了解前九篇文章内容有助于更好的理解本文: Spring Cloud第一篇 | Spring Cloud前言及其常用组件介绍概览 Spring Clo ...

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

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

随机推荐

  1. 简单 hash 入门题目

    题目描述 NOIP 复赛之前,HSD 桑进行了一项研究,发现人某条染色体上的一段 DNA 序列中连续的 kkk 个碱基组成的碱基序列与做题的 AC 率有关!于是他想研究一下这种关系.现在给出一段 DN ...

  2. Nginx的一理解(2)

    1.静态HTTP服务器 首先,Nginx是一个HTTP服务器,可以将服务器上的静态文件(如HTML.图片)通过HTTP协议展现给客户端. 配置:

  3. ubuntu系统搭建(jdk1.8+mysql5.7.28+Hadoop2.7.7+hive3.1.2)

    一不小心电脑没电关机之后虚拟机就挂了,然后下定决心重新搭一个虚拟机. 以下是几天安装过程的记录以及一些小提示,包括在ubuntu中安装jdk1.8+mysql5.7.28+Hadoop2.7.7+hi ...

  4. python爬虫——scrapy的使用

    本文中的知识点: 安装scrapy scrapy的基础教程 scrapy使用代理 安装scrapy 由于小哥的系统是win7,所以以下的演示是基于windows系统.linux系统的话,其实命令都一样 ...

  5. Gitlab安装配置管理

    ◆安装Gitlab前系统预配置准备工作1.关闭firewalld防火墙# systemctl stop firewalld# systemctl disable firewalld 2.关闭SELIN ...

  6. 关于爬虫的日常复习(14)—— 爬虫beautifulsoup的初级高级的基本用法

  7. elasticsearch(lucene)索引数据过程

    倒排索引存储-分段存储(lucene的功能)在lucene中:lucene index包含了若干个segment在elasticsearch中:index包含了若干主从shard,shard包干了若干 ...

  8. C入门题目

    37. 反转一个3位整数 反转一个只有3位数的整数. 样例 样例 1: 输入: number = 123 输出: 321 样例 2: 输入: number = 900 输出: 9 注意事项 你可以假设 ...

  9. JUC中的原子操作类及其原理

    昨天简单的看了看Unsafe的使用,今天我们看看JUC中的原子类是怎么使用Unsafe的,以及分析一下其中的原理! 一.简单使用AtomicLong 还记的上一篇博客中我们使用了volatile关键字 ...

  10. Java程序员学习Go语言—之一

    转载:https://www.luozhiyun.com/archives/206 GOPATH 工作空间 GOPATH简单理解成Go语言的工作目录,它的值是一个目录的路径,也可以是多个目录路径,每个 ...