本来想录制一个视频的,但是试了多次 还是对视频效果不太满意,主要是嗓音不好。表达也不十分清楚,于是记录成文章发表出来。
课程目录:
- 什么是分布式配置中心
- 配置中心特点 配置中心存放哪些内容
- Apollo分布式配置中心介绍
- Apollo架构图
- 实现分布式配置中心的原理和关键步骤
配置信息和应用程序分离。
配置中心特点- 有单独的后台管理页面,供用户新增修改配置信息
- 配置服务如果挂了,有相关的容灾方案(集群)
- 支持不同环境下的配置信息(我们线上的配置一般是分不同的环境配置不同的值)
- 相关权限管理(只有负责人才能对配置进行update)
- 简单易用(有对应的SDK支持或api支持)
开关 限流值 系统配置值 请求ip 端口
携程Apollo配置中心介绍Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性, 适用于微服务配置管理场景。
携程Apollo 架构图- Apollo启动后,Config/Admin Service会自动注册到Eureka服务注册中心,并定期发送保活心跳。
- Apollo Client和Portal管理端通过配置的Meta Server的域名地址经由 Software Load Balancer(软件负载均衡器)进行负载均衡后分配到某一个Meta Server
- Meta Server从Eureka获取Config Service和Admin Service的服务信息,相当于是一个Eureka Client
- Meta Server获取Config Service和Admin Service ( IP+Port )失败后会进行重试
- 获取到正确的Config Service和Admin Service的服务信息后, Apollo Client通过Config Service为应用提供配置获取、实时更新等功能; Apollo Portal管理端通过Admin Service提供配置新增、修改、发布等功能
- 通过给Environment环境变量的 propertySources属性添加PropertySource(ConfigPropertySource),且放在首位, 覆盖原来的@Value注解属性值。
- ConfigPropertySource中有从远程获取属性值的方法实现,在客户端启动时,根据属性名从分布式配置中心服务端查询属性值。
- 长轮询监控 服务端属性值变化。
- 一旦有变化 使用反射,修改 客户端bean属性,重新赋值。 长轮询请求时,服务端怎么判断时返回200,还是返回304? 客户端记录namse属性的版本号,初始是-1,当首次查询后,服务端返回版本号。 一旦服务端版本号,有变化。客户端下次请求时,使用旧的版本号 和服务端新的版本号 不相等, 则查询新的版本数据,状态返回200。如果相等 ,则状态返回304.
视频学习和演示地址
自己开发的分布式配置中心的效果演示
源代码地址
https://gitee.com/qylcode/qyl-cloud-server.git
https://gitee.com/qylcode/qyl-cloud-client.git
学习的参考资料
http://t.zoukankan.com/wuyongyin-p-13456777.html https://blog.csdn.net/qq_39530821/article/details/123930397 http://c.biancheng.net/view/5480.html



