Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。
本文从Apollo框架的客户端实现原理展开讨论。
上图简要描述了 Apollo 客户端的实现原理:
1.客户端和服务端保持了一个长连接,从而能第一时间获得配置更新的推送
2.客户端会定时从 Apollo 配置中心服务端拉取应用的最新配置(防止推送机制失效导致配置不更新)
3.客户端从 Apollo 配置中心服务端获取到应用的最新配置后,会保存在内存中
客户端会把从服务端获取到的配置在本地文件系统缓存一份,在遇到服务不可用,或网络不通的时候,依然能从本地恢复配置
4.应用程序从 Apollo 客户端获取最新的配置、订阅配置更新通知。
推拉结合及本地文件辅助
从户端实现原理可以看出,配置中心即控制中心,作为配置中心客户端和服务器端一致性是强需求。为了实现这个目的,采用了推拉结合及本地文件辅助的方式。
这里边涉及的关键词有 服务器,客户端,通知,长连接,同步,广播。
之前在项目中多次遇到到这种客户端需要接收到实时推送的需求,需求的本质就是要把服务器端数据及时更新到客户端,是一个数据发现和同步的过程。
本文中把这种需求定义为推送服务需求,从实现的便利性来说,都是采用第三方推送服务,实际上是推服务,然后把推送成功率全部压在这个服务的成功率上,众所周知的原因,客户端推送到达率存在一定的变数,关联因素比较多。最终这个需求的业务方满意度会大打折扣。
从客户端实现原理图中可以得到一些启示,如果想提高这个推送功能的可用性,需要从连接方式入手,采用推拉结合的方式。推方式依赖第三方服务,拉服务借助客户端自助定时结合策略,原理类似于消息补偿。
参考链接
文章已同步到公众号《图南日晟》欢迎关注
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。