微服务架构Day21-SpringCloud之分布式配置中心
SpringCloud Config
- SpringCloud整合了微服务中的整体解决方案:分布式配置中心,分布式锁,分布式任务调度平台,分布式事务,分布式日志收集
- 产生背景:在微服务中如果使用传统的方式管理配置文件,配置文件管理器将会非常复杂;在生产环境中,配置文件改变时,需要重新配置war包,重新读取配置文件信息到JVM中
- SpringCloud Config分布式配置中心:
- 在微服务中使用同一个服务器管理所有服务配置文件信息
- 在服务器运行的过程中,如果配置文件发生改变,不需要重启服务器就可以实时更改配置文件信息
Config配置文件的实时刷新不等同于热部署 热部署的底层实现其实还是重启服务器,不适合于生产环境,只适合于本地的开发测试
Config架构
- 当一个系统中的配置文件发生改变的时候,需要重新启动该服务,才能使配置文件生效
- SpringCloud Config可以实现微服务中所有系统的配置文件的统一管理,还可以实现当配置文件发生变化时,系统会自动更新获取新的配置
分布式配置中心框架
- 阿波罗: 携程的分布式配置中心框架,有图形界面可以管理配置文件信息,配置文件信息存放在数据库中
- SpringCloud Config: SpringCloud自带的分布式配置中心框架,没有后台可管理的分布式配置中心,配置文件信息存放在版本控制器中,如git,svn
zookeeper实现分布式配置中心,利用持久节点+事件通知实现
分布式配置中心设计原理
设计分布式配置中心的组件
- web管理系统: 可以在web后台使用图形界面管理配置文件(SpringCloud Config没有图形化管理组件)
- 存放分布式配置文件的服务器:
- 使用数据库存放配置文件:Apollo
- 使用版本控制器(git,svn等)存放配置文件信息:SpringCloud Config
- ConfigServer: 缓存配置文件的服务器(用于缓存git服务器上的配置文件信息)
- ConfigClient: 用于读取ConfigServer配置文件信息
存放分布式配置文件的服务器:持久化存储的服务器 ConfigServer:临时缓存存放的服务器
分布式配置中心原理
- 用户提交配置文件信息到版本控制器:git/SVN服务器上存放
- ConfigServer缓存从git服务器上获取到的配置文件信息
- ConfigClient端从ConfigServer端获取配置文件信息
搭建git环境:持久化存储配置文件信息 1.新建项目 2.新建文件夹(git上的文件夹以服务进行区分) 3.把配置文件存放到git文件夹中 搭建ConfigServer环境 1.引入configServer依赖spring-cloud-config-server 2.配置文件 eureka.client.service-url.defaultZone:http://loaclhost:8100/eureka # 注册中心服务地址 spring.application.name=config-server # config-server服务注册别名 spring.cloud.config.server.git.url=(git文件夹url地址) # config-server读取git项目的地址 spring.cloud.config.server.git.search-paths=- config # 读取配置文件的目录地址 spring.cloud.config.label=master # 读取的分支环境 server.port=8888 # 服务端口号 3.在主类上标注@EnableEurekaClient注解注册到注册中心,标注@EnableConfigServer注解开启ConfigServer功能模块 搭建ConfigClient环境 1.引入configClient依赖spring-cloud-config-client 2.配置文件 spring.application.name=config-client # 服务别名(要与git服务器保存的配置文件名一致) spring.cloud.config.profile=dev #读取的版本环境 spring.cloud.config.discovery.service-id=config-server # 读取的configServer环境,configServer在注册中心的别名 spring.cloud.config.discovery.enable=true # 开启读取权限 eureka.client.service-url.defaultZone=http://loaclhost:8100/eureka #注册中心地址 server.port=8889 #服务端口号 3.创建cotroller类读取配置文件信息,标注@RestController注解和@RequestMapping注解 4.创建configClient启动类,标注@EnableEurekaClient注解注册到注册中心
- git上创建配置文件名称规范:
- 服务名称-环境.properties(ticket-dev.properties)
Config配置文件实时刷新
- 默认情况下不能实时刷新配置文件信息,需要重启服务器才能刷新配置文件,这样不是很方便
- SpringCloud Config分布式配置中心支持手动刷新和自动刷新:
- 手动刷新: 需要人工调用接口,读取最新配置文件信息--监控中心
SpringBoot Actuator监控中心 1.引入actuator依赖spring-boot-starter-actuator 2.在配置文件中开启监控端点 management.endpoints.web.exposure.include="*" # 开启所有端点 3.启动运行configClient 4.在需要刷新的controller类中的bean当标注@RefreshScope注解使actuator刷新生效
- 自动刷新: 消息总线进行实时通知--springbus

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
骗局|架构师一定要掌握技术细节吗?
做程序员的就没有不想成为架构师的,如果有,那他一定是个有“想法”的程序员。 架构师已经是程序员中处在技术最顶尖的一群人,如果你说上面还有技术总监和CTO呢,那只能说你层次还太低了没看明白。 程序员发展 程序员发展线路图(这线路中任何时候转管理都行): CTO 总监 架构级 专家级 高级 中级 初级 public class Test { public static void main(String[] args){ System.out.println("架构级程序员,统称为‘架构师’。"); } } 总监和CTO已经走向了管理和业务,脱离技术一线。如果发现你们公司总监或CTO还在写Code,那说明你们公司有点小,真的很小,有可能都算不上个公司。 首先,架构师一定是“掌握过”技术的。 这里的“掌握过”要理解一下,架构以下的程序员都是在一条赛道上跑,熟悉业务再深入技术底层。 比如一个刚毕业的IT,从事java开发,一开始就会个java语法,略微会个spring,这叫初级程序员。等他工作个1年,发现能在一个搭建好的project框架下熟练开发业务,不需要太多帮助了,这叫中级程序员了。在过个...
- 下一篇
Facebook Delos 中的虚拟共识协议
本文整理自OSDI 2020 Virtual Consensus in Delos 论文演讲,探讨了分布式系统中控制面的存储组件的实现,提出了一种基于分层抽象思想的分布式架构。其核心在于提出了一种逻辑协议层,使得物理层可以按需进行实现、移植和迁移,有点类似于单机系统中虚拟内存之于物理内存的味道。 背景 Facebook 的软件系统栈一般包括两层:上层是数据平面, 下层是控制平面。 facebook software stack 数据平面包括大量的服务,他们需要存储和处理海量数据。控制平面用来支撑数据平面,起到一些控制作用:调度、配置、命名、切片等等。控制平面通常是有状态的,比如控制的元信息,为了存储这些元信息,控制平面需要有自己的存储。控制平面对存储有以下要求: 容错:零依赖、可持久化、高可用。 丰富的 API:事务,范围查询,二级索引。 在 17 年的时候, Facebook 使用几种组件来充当控制平面的存储,包括: MySQL:API 丰富,表达能力强,但是不支持容错。 ZooKeeper:容错,零依赖,但是 API 表达能力弱。 可以看出,他们都不能很好的同时满足控制平面对存储的...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Red5直播服务器,属于Java语言的直播服务器
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- Windows10,CentOS7,CentOS8安装Nodejs环境
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- Hadoop3单机部署,实现最简伪集群
- CentOS8安装Docker,最新的服务器搭配容器使用