系统服务化构建-客户端与服务器端数据一致性探讨

Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。

本文从Apollo框架的客户端实现原理展开讨论。

客户端实现原理.png

原文链接
Apollo 配置中心:分布式部署

上图简要描述了 Apollo 客户端的实现原理:

1.客户端和服务端保持了一个长连接,从而能第一时间获得配置更新的推送
2.客户端会定时从 Apollo 配置中心服务端拉取应用的最新配置(防止推送机制失效导致配置不更新)
3.客户端从 Apollo 配置中心服务端获取到应用的最新配置后,会保存在内存中
客户端会把从服务端获取到的配置在本地文件系统缓存一份,在遇到服务不可用,或网络不通的时候,依然能从本地恢复配置
4.应用程序从 Apollo 客户端获取最新的配置、订阅配置更新通知。

推拉结合及本地文件辅助

从户端实现原理可以看出,配置中心即控制中心,作为配置中心客户端和服务器端一致性是强需求。为了实现这个目的,采用了推拉结合及本地文件辅助的方式。

这里边涉及的关键词有 服务器,客户端,通知,长连接,同步,广播。

之前在项目中多次遇到到这种客户端需要接收到实时推送的需求,需求的本质就是要把服务器端数据及时更新到客户端,是一个数据发现和同步的过程。

本文中把这种需求定义为推送服务需求,从实现的便利性来说,都是采用第三方推送服务,实际上是推服务,然后把推送成功率全部压在这个服务的成功率上,众所周知的原因,客户端推送到达率存在一定的变数,关联因素比较多。最终这个需求的业务方满意度会大打折扣。

从客户端实现原理图中可以得到一些启示,如果想提高这个推送功能的可用性,需要从连接方式入手,采用推拉结合的方式。推方式依赖第三方服务,拉服务借助客户端自助定时结合策略,原理类似于消息补偿。

参考链接

Apollo 配置中心:分布式部署

阿波罗分布式配置中心


文章已同步到公众号《图南日晟》欢迎关注
图南日晟.png

阅读 598

推荐阅读
图南科技
用户专栏

分享,记录工作学习过程中的收获,心得,体会。主要涉及分布式系统设计,MoongoDB,消息队列,PHP技术栈...

749 人关注
16 篇文章
专栏主页