apollo 架构源码阅读(1)

apollo 架构源码阅读

阅读源码的基础步骤:

  1. 框架的主要功能,解决什么的问题(它的定位,介绍)
  2. 框架的应用总体架构,架构中的模块的定位以及其主要功能
  3. 找到开源框架的wiki 了解设计思想,可以帮助更加快速理解框架的设计思路,帮更加易于吸收
  4. 找到初始化的配置,沿着主线功能(拆分主要流程 依次源码阅读),需要记录其中用到的设计模式,还有他的奇淫异巧

介绍:

为了解决spring 容器在启动之后,相关的配置想要更新,却需要重启,才能生效新的配置

其提供了

  1. 管理端服务portal(图形界面)
  2. client服务
  3. adminService中心
  4. configService配置中心

辅助的组件

  1. metaService 为了让非java语言可以适用apollo的功能,增加这个metaService作为一个代理,可以帮助获取adminService,configService的服务地址
  2. eureka 注册中心
  3. nignxLb 让不同的适用 php net语言,通过http的方式 有ngixlb 转发去获取metaService的服务

整体架构

请添加图片描述

主要关注的是客户端如何实现动态更新bean的值

  1. 服务端发布或者修改配置,保存后通知apollo中心
  2. apollo 中心通知所有客户端,有配置更新了
  3. 客户端接口到变更的信息,查看变更的配置比较判断,发现自己这边有对应配置被修改就主动到configService拉取配置信息

请添加图片描述

设置了一系列的可以值,来确保能够区分应用,环境,空间,集群

关于客户端的内的实现:

请添加图片描述

以下会挑选其中的模版部分设计来单独讲解

精华部分:

  1. http 长轮训的设计

    http 的长轮训操作

  2. 客户端的SLB负载

  3. spring beanFactoryPostproposs修改bd(1. 客户端的同步更新Spring容器中注入的@Value的值)

  4. Apollo 如何实现让自己的配置优先级最高

如何实现bean value值的动态替换

  1. 为什么要使用Spring deferredResult的使用

为什么要使用DeferredResult

参考:https://mp.weixin.qq.com/s/-hUaQPzfsl9Lm3IqQW3VDQ

源码分析:https://blog.csdn.net/zk4042602/article/details/123514663

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值