apollo 架构源码阅读
阅读源码的基础步骤:
- 框架的主要功能,解决什么的问题(它的定位,介绍)
- 框架的应用总体架构,架构中的模块的定位以及其主要功能
- 找到开源框架的wiki 了解设计思想,可以帮助更加快速理解框架的设计思路,帮更加易于吸收
- 找到初始化的配置,沿着主线功能(拆分主要流程 依次源码阅读),需要记录其中用到的设计模式,还有他的奇淫异巧
介绍:
为了解决spring 容器在启动之后,相关的配置想要更新,却需要重启,才能生效新的配置
其提供了
- 管理端服务portal(图形界面)
- client服务
- adminService中心
- configService配置中心
辅助的组件
- metaService 为了让非java语言可以适用apollo的功能,增加这个metaService作为一个代理,可以帮助获取adminService,configService的服务地址
- eureka 注册中心
- nignxLb 让不同的适用 php net语言,通过http的方式 有ngixlb 转发去获取metaService的服务
整体架构
主要关注的是客户端如何实现动态更新bean的值
- 服务端发布或者修改配置,保存后通知apollo中心
- apollo 中心通知所有客户端,有配置更新了
- 客户端接口到变更的信息,查看变更的配置比较判断,发现自己这边有对应配置被修改就主动到configService拉取配置信息
设置了一系列的可以值,来确保能够区分应用,环境,空间,集群
关于客户端的内的实现:
以下会挑选其中的模版部分设计来单独讲解
精华部分:
-
http 长轮训的设计
-
客户端的SLB负载
-
spring beanFactoryPostproposs修改bd(1. 客户端的同步更新Spring容器中注入的@Value的值)
-
Apollo 如何实现让自己的配置优先级最高
- 为什么要使用Spring deferredResult的使用
参考:https://mp.weixin.qq.com/s/-hUaQPzfsl9Lm3IqQW3VDQ
源码分析:https://blog.csdn.net/zk4042602/article/details/123514663