Apollo(阿波罗)是携程开源的一款可靠的分布式配置管理中心,它能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景
目前市面上用的比较多的配置中心有:
功能点 | Spring Cloud Config | Apollo | Nacos |
---|---|---|---|
配置实时推送 | 支持 | 支持(HTTP长轮询1s内) | 支持(HTTP长轮询1s内) |
版本管理 | 支持 | 支持 | 支持 |
灰度发布 | 支持 | 支持 | 不支持 |
权限管理 | 支持(依赖Git) | 支持 | 不支持 |
多语言 | 只支持Java | 主流语言,提供了Open API | 主流语言,提供了Open API |
1、在Apollo配置中心修改配置
2、应用程序通过Apollo客户端从配置中心拉取配置信息
用户通过Apollo配置中心修改或发布配置后,会有两种机制来保证应用程序来获取最新配置:
通过以上两种 机制共同来保证应用程序能及时获取到配置。
应用
环境
集群
关系
命名空间
一个应用下不同配置的分组
通过namespace对我们的配置项进行分类管理
公共和私有:
有共用的情况,公共命名空间可以继承
在企业中常用的部署方案为:
具体如下图所示:
具体实现方式如下:
Admin Service在配置发布后会往ReleaseMessage表插入一条消息记录
Config Service有一个线程会每秒扫描一次ReleaseMessage表
Config Service如果发现有新的消息记录,那么就会通知到所有的消息监听器
1.
NotificationControllerV2得到配置发布的AppId+Cluster+Namespace后,会通知对应的客户端
上面描述了NotificationControllerV2是如何得知有配置发布的
NotificationControllerV2在得知有配置发布通知到客户端:
客户端发送请求类:RemoteConfigLongPollService
除了之前介绍的客户端和服务端保持一个长连接,从而能第一时间获得配置更新的推送外,客户端还会定时从
Apollo配置中心服务端拉取应用的最新配置。