系统更新用数据连接到服务器,系统服务化构建-客户端与服务器端数据一致性探讨...

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

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

1460000021751687

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

1.客户端和服务端保持了一个长连接,从而能第一时间获得配置更新的推送

2.客户端会定时从 Apollo 配置中心服务端拉取应用的最新配置(防止推送机制失效导致配置不更新)

3.客户端从 Apollo 配置中心服务端获取到应用的最新配置后,会保存在内存中

客户端会把从服务端获取到的配置在本地文件系统缓存一份,在遇到服务不可用,或网络不通的时候,依然能从本地恢复配置

4.应用程序从 Apollo 客户端获取最新的配置、订阅配置更新通知。

推拉结合及本地文件辅助

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

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

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

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

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

参考链接

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

1460000021751686

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值