阿波罗(Apollo)是携程框架部开发的分布式配置中心,可以集中管理不同环境、不同集群应用的配置。配置修改后,可以实时推送到应用端,具有标准化权限和流程治理的特点,适用于微服务配置管理场景。本文讨论了Apollo框架的客户端实现原理。原文链接Apollo配置中心:分布式部署上图简单描述了Apollo客户端的实现原理:1、客户端与服务端保持长连接,以便第一时间获取到配置更新的推送2、客户端会定时从Apollo配置中心服务器拉取应用的最新配置(防止推送机制失效导致配置无法更新)3.客户端从Apollo配置中获取到应用的最新配置后centerserver,会保存在内存中。终端获取的配置缓存在本地文件系统中。当服务不可用或网络不可用时,仍然可以在本地恢复配置。4、应用从Apollo客户端获取最新配置,并订阅配置更新通知。推拉组合和本地文件辅助从客户端的实现原理可以看出,配置中心是控制中心,作为配置中心的客户端和服务端的一致性是一个强需求。为了达到这个目的,采用了推拉结合和本地文件辅助的方式。这里涉及到的关键字有server、client、notification、longconnection、synchronization、broadcast。之前在项目中多次遇到过这种客户端接收实时推送的需求。需求的本质是将服务器端的数据及时更新到客户端,这是一个数据发现和同步的过程。在本文中,这个需求被定义为推送服务需求。从实现的方便性来看,使用了第三方的推送服务,其实就是推送服务,然后推送成功率都压在了这个服务的成功率上。众所周知原因是客户端推送到达率存在一定的变数,相关因素很多。最终业务方对这个需求的满足度会大大降低。从客户端实现示意图中可以得到一些启发。如果想提高这个推送功能的易用性,需要从连接方式入手,使用推拉结合的方式。push方式依赖第三方服务,pull服务依赖客户端自助定时组合策略。原理类似于消息补偿。参考链接Apollo配置中心:分布式部署Apollo分布式配置中心文章已同步到公众号《图南日晟》欢迎关注
