写点什么

Facebook Messenger 弃用拉模式,改用基于推模式的快照 - 增量模型

  • 2014-10-24
  • 本文字数:1045 字

    阅读完需:约 3 分钟

Facebook Messenger 是 Facebook 官方发布的即时聊天应用,类似于手机短信应用,允许用户在手机上向 Facebook 上或者手机通讯录中的好友免费发送信息。去年开始,Facebook 尝试为 Messenger 构建“移动优先(Mobile First)”的用户体验。近日,Facebook 官方博客发表了一篇文章,介绍他们的新同步协议及效果。

客户端

在原先的协议中,Messenger 通过拉模式获取数据。当有新消息时,它首先会收到一条有新数据可用的通知。之后,它会向服务器发送一个复杂的HTTPS 查询请求,并接收一个很大的JSON 响应。

在新协议中,Facebook 改用一种基于推模式的快照- 增量模型。在这个模型中,客户端会首先检索一个消息快照,然后订阅增量更新。当有新消息时,客户端会接收到通过 MQTT 协议推送的增量更新。这样,它无需再次发起 HTTPS 请求,就可以快速展示最新的消息视图。

此外,他们认为,用 JSON 格式在线传递消息及增量更新不够高效,于是便用 Thrift 代替了 JSON。这使其网络有效负载降低了大约 50%。

服务器端

通常,消息数据都存储在旋转磁盘上。在拉模式中,在通知 Messenger 发送查询请求从磁盘读取数据之前,要先将数据写入磁盘。这样,同一个存储层既要存储实时消息又要存储完整的对话历史。这种方式无法满足新开发的同步协议。他们需要将同样的更新序列以用户为单位实时并行地发送到 Messenger 应用和存储层。

于是,他们开发了 Iris。这是一个消息更新的全序队列,它有两个单独的指针,分别指向最近发送给 Messenger 应用的更新和最近发送到传统存储层的更新。当消息成功发送到手机或磁盘时,相应的指针就会向前移动。当手机离线时,相应的指针就会停在原处,而新消息仍然可以进入队列,其它指针正常移动,反之亦然。这样,Messenger 应用和传统存储层就能以各自的速率进行同步,互不影响。

实际上,该队列基于时间实现了一个三层存储模型:

  • 最新消息从 Iris 的内存立即发送给 Messenger 应用和磁盘存储层
  • 一周内的消息存储在队列的后台存储中
  • 更早的对话历史和完整的收件箱快照则由传统磁盘存储层提供

另外,在综合考虑了扩展性、可靠性、速度和灵活性后,他们最终选择基于 MySQL 和闪存实现了 Iris 的后台存储,并使用了 MySQL 的半同步复制功能。

效果

新同步协议使非媒体数据减少了 40%。而通过减少网络阻塞,用户消息发送失败的情况减少了大约 20%。


感谢郭蕾对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2014-10-24 01:424200
用户头像

发布了 1008 篇内容, 共 439.7 次阅读, 收获喜欢 346 次。

关注

评论

发布
暂无评论
发现更多内容

实现-最佳实践-分享演讲V3

南山

个人成长

实现-最佳实践-人生规划V3

南山

个人成长

实现-最佳实践-学做一道菜V3

南山

个人成长

被动元数据的不足和主动元数据的先进性

Aloudata

大数据 数据治理 元数据 数据管理 数据血缘

华为openMind分论坛:赋能AI社区生态汇聚,推动AI创新发展智慧未来

极客天地

.net core集成Minio,构建一个文件存储的基础设施

为自己带盐

.net core Minio

实现-最佳实践-大模型提效V3

南山

个人成长

实现-最佳实践-个人复盘V3

南山

个人成长

社区来稿丨一个真正意义上的实时多模态智能体框架,TEN Framework 为构建下一代 AI Agent 而生

声网

【首席战略官分享】流程管理和流程数字化 | 活动成本法

望繁信科技

数字化转型 业务流程管理 流程挖掘

实现-最佳实践-创造心流体验V3

南山

个人成长

天润融通发布微藤智能体平台,中国客户联络正式进入“智能体时代”

天润融通

实现-最佳实践-难事开头V3

南山

个人成长

实现-最佳实践-睡前复盘V3

南山

观测云全面支持 OaC,通过 Terraform 管理您的可观测性

观测云

Terraform

实现-最佳实践-感恩日记V3

南山

个人成长

实现-最佳实践-个人介绍V3

南山

个人成长

实现-最佳实践-目标觉知V3

南山

个人成长

实现-最佳实践-目标制定V3

南山

个人成长

实现-最佳实践-善于分享V3

南山

个人成长

实践-最佳实践-时间管理V3

南山

个人成长

实现-最佳实践-沉淀与践行V3

南山

个人成长

AI媒体工作流“出道” | 闪迪助力探索AI的实践与创新

极客天地

实现-最佳实践-剁椒鱼头V3

南山

个人成长

实现-最佳实践-精力管理V3

南山

个人成长

RTE 大会报名丨AI 时代新基建:云边端架构和 AI Infra ,RTE2024 技术专场第二弹!

声网

实现-最佳实践-规划开头V3

南山

个人成长

实现-最佳实践-权益维护抉择V3

南山

个人成长

实现-最佳实践-适应高度刺激V3

南山

个人成长

中国移动研究院与华为举行"数联网(DSSN)合作备忘录"签约仪式

极客天地

Facebook Messenger弃用拉模式,改用基于推模式的快照-增量模型_Meta_谢丽_InfoQ精选文章