Apollo是携程框架部门研发的开源配置管理中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性。
Apollo的特性如下:
统一管理不同环境、不同集群的配置。
Apollo提供了一个统一界面集中式管理不同环境、不同集群、不同命名(namespace)空间的配置,而且同一份代码部署在不同集群,可以有不同的配置。
配置修改实时生效(热发布)
版本发布管理
灰度发布
客户端配置信息监控
可以在界面上方便地看到配置在被哪些实例使用。
提供Java和.Net原生客户端
提供开放平台API
部署简单
可以看到,Apollo的特性几乎符合上文配置中心的核心需求。
Apollo的基本模型
我们可以看到,Apollo在配置时的基础流程:
1. 用户现在UI界面修改/发布配置。
2. Apollo配置中心会将配置更新信息推送到Apollo客户端。
3. 客户端再从Apollo配置中心拉取最新配置,更新本地配置之后,通知到应用。
Apollo客户端实现原理
客户端和服务端会保持一个长连接,从而第一时间获取配置更新的推送。
1. 客户端还会定时从Apollo配置中心服务端拉取应用的最新配置,而且客户端定时拉取会上报给本地版本,默认每隔5分钟拉取一次,也可以通过运行时指定apollo.refreshInterval来覆盖,单位为分钟。
2. 客户端从Apollo配置中心服务端获取到应用的最新配置后,会保存在内存。
3. 客户端会把从服务端拉取到的配置在本地文件系统缓存一份,保证在遇到服务不可用或网路故障时,依赖能从本地恢复配置,也实现了一定的高可用性。
4. 应用程序从客户端获取到罪行的配置、订阅配置更新通知。
配置更新推送实现
上文提到Apollo客户端和服务端保持了一个长连接,从而可以第一时间获得配置更新的推送,实际上长连接是通过Http Long Polling实现的:
客户端发起Http请求给服务端
服务端保持60s连接
如果在60s中有客户端关心的配置变化,则请求会立即返回,并告知客户端有配置变化的namespace信息,客户端会据此拉取该namespace的最新配置。
如果60s内没有客户端关心的配置变化,则返回http状态码304给客户端。
在服务端,是用async servlet(Spring DeferredResult)来服务Http Long Polling请求。
Apollo总体设计
在捋清思路之前,先对其中的模块进行了解:
主要模块:
ConfigService
提供配置获取接口
提供配置推送接口
服务于Apollo客户端
AdminService
提供配置管理接口
提供配置修改发布接口
服务于管理界面Portal
Client
为应用获取配置,支持实时更新
通过MetaServer获取ConfigService的服务列表
使用客户端软负载SLB方式调用ConfigService
Portal
配置管理页面
通过MetaServer获取AdminService的服务列表
使用客户端软负载SLB方式调用AdminService
辅助模块:
Eureka
用于服务发现和注册
Config/AdminService注册实例并定期报心跳
和ConfigService一起部署
MetaServer
Portal通过域名访问MetaServer获取AdminService的地址列表
Client通过域名访问MetaServer获取ConfigService的地址列表
相当于Eureka Proxy
和ConfigService一起部署
NginxLB
和域名系统配合,协助Portal访问MetaServer获取AdminService的地址列表
和域名系统配合,协助Client访问MetaServer获取ConfigService的地址列表
和域名系统配置,协助用户访问Portal进行配置管理。
以上就是极悦java培训机构的小编针对“Apollo视频教程,你需要了解的知识”的内容进行的回答,希望对大家有所帮助,如有疑问,请在线咨询,有专业老师随时为你服务。
你适合学Java吗?4大专业测评方法
代码逻辑 吸收能力 技术学习能力 综合素质
先测评确定适合在学习