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创建一个专门存放配置文件的仓库:
可以看到,我们使用的是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消息总线,敬请期待!
本文由博客一文多发平台 OpenWrite 发布!
Spring-cloud微服务实战【九】:分布式配置中心config的更多相关文章
- Spring Cloud 微服务实战——nacos 服务注册中心搭建(附源码)
作为微服务的基础功能之一的注册中心担任重要的角色.微服务将单体的服务拆分成不同的模块下的服务,而不同的模块的服务如果进行通信调用呢?这就需要服务注册与发现.本文将使用阿里开源项目 nacos 搭建服务 ...
- Spring Cloud微服务实战阅读笔记(一) 基础知识
本文系<Spring Cloud微服务实战>作者:翟永超,一书的阅读笔记. 一:基础知识 1:什么是微服务架构 是一种架构设计风格,主旨是将一个原本独立的系统拆分成多个小型服务 ...
- Spring Cloud 微服务实战笔记
Spring Cloud 微服务实战笔记 微服务知识 传统开发所有业务逻辑都在一个应用中, 开发,测试,部署随着需求增加会不断为单个项目增加不同业务模块:前端展现也不局限于html视图模板的形式,后端 ...
- spring cloud微服务实战教程/pdf/视频/百度云资源
资源站:http://www.supan.vip 点击进入直接查找资源: http://www.supan.vip/spring%20cloud微服务实战 <Spring Cloud微服务实战& ...
- Spring Cloud学习笔记【九】配置中心Spring Cloud Config
Spring Cloud Config 是 Spring Cloud 团队创建的一个全新项目,用来为分布式系统中的基础设施和微服务应用提供集中化的外部配置支持,它分为服务端与客户端两个部分.其中服务端 ...
- 一起来学Spring Cloud | 第七章:分布式配置中心(Spring Cloud Config)
上一章节,我们讲解了服务网关zuul,本章节我们从git和本地两种存储配置信息的方式来讲解springcloud的分布式配置中心-Spring Cloud Config. 一.Spring Cloud ...
- Spring cloud微服务实战——基于OAUTH2.0统一认证授权的微服务基础架构
https://blog.csdn.net/w1054993544/article/details/78932614
- Spring Cloud第十篇 | 分布式配置中心Config
本文是Spring Cloud专栏的第十篇文章,了解前九篇文章内容有助于更好的理解本文: Spring Cloud第一篇 | Spring Cloud前言及其常用组件介绍概览 Spring Clo ...
- spring boot 2.0.3+spring cloud (Finchley)6、配置中心Spring Cloud Config
https://www.cnblogs.com/cralor/p/9239976.html Spring Cloud Config 是用来为分布式系统中的基础设施和微服务应用提供集中化的外部配置支持, ...
随机推荐
- 单词匹配 - hash
哈利波特在魔法学校的必修课之一就是学习魔咒.据说魔法世界有100000种不同的魔咒,哈利很难全部记住,但是为了对抗强敌,他必须在危急时刻能够调用任何一个需要的魔咒,所以他需要你的帮助. 给你一部魔咒词 ...
- 求树上任意一点所能到达的最远距离 - 树上dp
A school bought the first computer some time ago(so this computer's id is 1). During the recent year ...
- 安装SQL的时候,设置用户权限失败
在安装sql的时候,遇到一个问题: 在查看报表明细中,提示: 就是这三个: 首先确保你是使用管理员用户安装的,如果还不行,运行 secpol.msc 进入本地安全策略 把自己的用户名加入进来就好了.
- dubbo配置文件解读(2)
<dubbo:service/> <dubbo:reference/> <dubbo:protocol/> <dubbo:registry/> < ...
- excel 转换成pdf 总结
excl 转换成pdf 1.freespire 只能转换前三页 // 使用此组件 只能转换前3页 //需要引用 如下命名空间 //using Spire.Doc; //Document doc = ...
- 一文熟练使用python mock
mock作为python测试模拟对象工具,在单元测试当中使用较多,官方文档详细不够精简,这篇文章介绍mock常用的用法,以下为引用全文,留给自己和有需要的人查阅. https://realpython ...
- 为什么你应该使用 Kubernetes(k8s)
Kubernetes (Kube 或 K8s)越来越流行,他是市场上最好的容器编排工具之一. 1. 什么是容器? 容器就是一个包,其中包含了应用及其所有依赖. 容器中的应用与主机系统是隔离的,不关注环 ...
- 使用telnet连接redis
平时连接redis用的是官方客户端redis-cli, 使用redis-cli最常用的几个参数如下: -h <hostname> Server hostname (default: 127 ...
- 聊一聊 InnoDB 引擎中的这些索引策略
在上一篇中,我们简单的介绍了一下 InnoDB 引擎的索引类型,这一篇我们继续学习 InnoDB 的索引,聊一聊索引策略,更好的利用好索引,提升数据库的性能,主要聊一聊覆盖索引.最左前缀原则.索引下推 ...
- 大叔 Frameworks.Entity.Core 2 PageList
Frameworks.Entity.Core\Commons\PageList\ 1 分页通用类 ListPageList<T> 继承 PageListBase<T>, IP ...