apollo 配置中心_携程Apollo配置中心介绍

Apollo综述:

Apollo是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程智力等特性,适用于微服务。

服务端基于Spring Boot和Spring Cloud开发、打包后可以直接运行,不需要额外安装Tomcat等应用容器。

Apollo特性:

  • 统一管理不同环境、不同集群的配置
  • 配置修改实时生效(秒级热发布)
  • 版本发布管理
  • 灰度发布(只对某些应用生效)
  • 权限管理、发布审核、操作审计
  • 客户端配置信息监控(看到配置在被哪些实例使用)
  • 提供Java和.Net原生客户端
支持Spring placeholder,Annotation和Spring Boot的ConfigurationProperties,方便应用使用
同时支持提供了Http接口,非Java和.Net应用也可以方便的使用
  • 提供开放平台API
  • 部署简单
配置中心作为基础框架,可用性要求非常高
目前唯一外部依赖是Mysql,所以部署非常简单
Apollo还提供了打包脚本,一键就可以生成所有需要的安装包,并且支持自定义运行时参数

工作原理:

  1. 架构原理

6fff6a46fd387d779b07a5c863469cc3.png
  • 用户在Portal操作配置发布
  • Portal调用Admin Service的接口操作发布
  • Admin Service发布配置后,发送RealeaseMessage给各个Config Service
  • Config Service收到ReleaseMessage后,通知对应客户端

2.客户端

1f9d0a72bbf5cfbb14e4329a9b20a5af.png

上图简要描述了Apollo客户端的实现原理

  • 客户端和服务端保持一个长链接,从而能第一时间获取配置更新的推送。(通过Http long polling实现)
  • 客户端还会定时从Apollo配置中心服务端拉取应用的最新配置
这是一个failback机制,为了防止推送机制失效导致配置不更新
客户端定时拉取会上报本地版本,所以一般情况下,对于定时拉取的操作,服务端都会返回304-Not Modified
定时频率默认为每5分钟拉取一次,客户端也可以通过在运行时指定System Property:apollo.refreshInterval来覆盖,单位为分钟
  • 客户端拉取到最新配置后,会保存到内存中,同时保存配置到本地文件系统缓存一份
  • 这样好处就是当网络不可用,或者服务不可用,依然能够从本地恢复配置
  • 应用程序可以从Apollo客户端获取最新的配置,订阅配置更新通知
  • 核心代码
具体的类就是RemoteConfigRepository

长链接/长轮询

长轮询实际上就是一个类似死循环里,不停请求configServer的配置变化通知接口notification/v2,
如果配置有变更,就会返回变更信息,然后向定时任务线程池提交一个任务,任务内容是执行sync方法
在请求ConfigServer的时候,ConfigServer使用了Servlet3的异步特性,将hold住链接30秒,等到有
通知就立刻返回,这样就能够实现一个基于Http的长链接
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值