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. 架构原理

apollo 配置中心_携程Apollo配置中心介绍_第1张图片
  • 用户在Portal操作配置发布
  • Portal调用Admin Service的接口操作发布
  • Admin Service发布配置后,发送RealeaseMessage给各个Config Service
  • Config Service收到ReleaseMessage后,通知对应客户端

2.客户端

apollo 配置中心_携程Apollo配置中心介绍_第2张图片

上图简要描述了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的长链接

你可能感兴趣的:(apollo,配置中心,apollo配置中心使用,apollo集群部署,easy,connect,获取服务端配置信息失败)