mPaaS 服务端核心组件:移动同步服务 MSS 架构解析

简介: 移动同步服务 MSS 是移动开发平台 mPaaS 的核心基础服务组件之一,源自于蚂蚁金服集团内面向移动应用从服务端到客户端进行海量数据推送的全链路解决方案。

mPaaS 服务端核心组件:移动同步服务 MSS 架构解析

承接《mPaaS 服务端核心组件》系列,本篇文章围绕移动同步服务(Mobile Sync Service)展开架构解析。MSS 是移动开发平台 mPaaS 的核心基础服务组件之一,源自于蚂蚁金服集团内面向移动应用从服务端到客户端进行海量数据推送的全链路解决方案。
该系列已推送内容请参考文章尾部推荐。

核心概念解读:移动同步服务 MSS

MSS 的核心概念为:
通过一个安全的数据通道 TCP+SSL,及时、准确、有序地将服务器端的业务数据,主动的同步(SYNC)到客户端 App,可被定义为:一个客户端与服务端之间的可靠消息中间件
image.png

传统的 RPC 已立足互联网行业几十年,也能满足绝大部分业务场景和功能需求。但现阶段随着移动互联网的全面普及和升华,无论是 App 的规模还是用户对于 App 实时响应的要求都已进入了一个新的阶段。
传统的请求响应因 RPC 自身特性,存在许多的不足,典型的如:
1. 客户端 App 在特定的场景下需要调用 RPC 请求来获取最新的数据,而服务端(云端)实际没有或仅有少量数据发生变化;
2. 当客户端启动时,不同的业务模块,业务功能因设计上的独立,需要分别进行 RPC 请求来完成各自业务的数据拉取;
3. 当服务端(云端)有业务数据发生变化时,客户端无法实时感知,或只能定时轮询 RPC 接口来定期检查变化;
4. 从技术角度,传统 RPC 大多基于 http(s) 的短连接进行数据交互,连接上即使使用 keepalive 等特性也无法长期保持连接,无法做到链路持续复用,请求创建连接,证书交换,加解密等对网络耗时及性能都会带来不小的损耗。

由此,为了解决或优化这些问题,MSS 应运而生,其核心特性有:
1. 可靠同步:所谓可靠,是针对业务要求的 QoS(Quality of Service)等级为必达的业务场景而言,SYNC 保证只要用户在该数据有效期内活跃并且匹配业务推送要求的条件(客户端版本号、操作系统类型等多个维度),就一定会让客户端同步到业务推送的数据。
2. 增量有序:MSS 保证同一个通道内到达客户端的消息顺序一定是与业务服务器调用 MSS 服务器的顺序是一致的,并且所有消息以增量方式同步至客户端。
3. 高实时性:当客户端连接的网络状况良好,MSS 推送的实时性是很高的,消息推送耗时几乎是纯网络传输的耗时(1s 之内送达)。当客户端连接的网络受到主干网波动、路由器故障、基站信号弱、客户端存储满等不可抗拒因素干扰时,MSS 推送则会待 TCP 长连接重新建上以后再进行数据同步。

MSS基础原理

类似于 MySQL 的 binlog 机制,MSS 服务器和客户端 SDK 之间传递的基本数据单元为 oplog,当业务需要同步一个变更数据到指定的用户或设备时,业务调用 MSS 接口,MSS 服务端会将业务需要同步的数据变更包装为一个 oplog 持久化到数据库,然后在客户端在线的时候把 oplog 推送给客户端。每个 oplog 拥有一个唯一的 oplog ID,oplog ID 在确定的用户确定的业务范围内保证唯一并且单调递增(按调用顺序)。MSS服务端会按照 oplog ID 从小到大的顺序把每一条 oplog 都推送至客户端。
MSS 服务端和客户端都会记录客户端已经收到的最大 oplog ID,称为同步点(亦可以被理解成数据版本号)。

  1. 典型场景一:长连接建立时,同步积压数据
    假定,客户端有三个业务:Biz1,Biz2,Biz3。它们各自的同步点为:8,17,21。
    MSS 的服务端对这三个业务分别检查同步点之后有没有积压的 oplog。如图所示,服务端检查出来 Biz1 有 ID 为 23,26 的两条 oplog 积压,Biz2 有 ID 为 24,25,29 的三条 oplog 积压,Biz3 有 ID 为 30 的一条 oplog 积压。
    image.png

服务端把上一步中查出来的各个业务积压数据推送给客户端。
image.png

客户端收到数据后,把各个业务最大的 oplog ID 上报给服务端,服务端确认客户端已经收到这些数据。此时 Biz1,Biz2,Biz3,它们各自的同步点为:26,29,30。服务端确认没有积压的数据,同步暂时到达一个稳定的状态。同时,在客户端,MSS SDK 把收到的新数据通知给 Biz1,Biz2,Biz3 三个业务。
image.png

  1. 典型场景二:客户端在线时,实时推送数据
    假定客户端在线,TCP 长连接依旧存活着,Biz3 业务服务器请求把一个数据同步到客户端,MSS 服务器给它的oplog 编号为 35,先持久化至数据库。
    image.png

服务端判断出客户端到服务端的长连接在线,把编号为 35 这条 oplog 推送给客户端。
image.png

客户端收到编号为 35 这条 oplog 后,向服务端 ACK 回执报告已经收到了。此时同步再次暂时到达一个稳定状态。同时,在客户端,SYNC SDK 把收到的新数据通知给 Biz3 业务。
image.png

MSS优势

究其特性和原理,MSS 可体现出独有的优势:
1. 增量推送:增量推送业务数据,可有效减少冗余数据的传输,极大降低网络传输成本。
2. 合并推送:客户端初始化成功时,服务端可一次性推送多个业务数据,避免了不同业务模块各自进行的 RPC 请求。
3. 减少请求:当服务端无增量业务数据时,将不会消耗任何客户端 RPC 请求成本,减少业务的冗余 RPC。
4. 提高时效:当服务端发生数据变化时,可在最短时间内将数据直接推送至客户端,无需等待客户端 RPC 请求时响应。
5. 提升体验:数据在用户无直接感知情况下推送,在渲染客户端界面之前,数据已到位,降低了用户等待时间。

MSS架构

1. 业务&MSS&客户端:
image.png

业务服务仅需与 MSS 服务器端交互,接口成功调用之后,后续数据同步的过程全权由 MSS 来接管,业务系统接入成本非常低。
image.png

MSS 客户端 SDK 与业务模块之间同样有类似的机制来保证数据可靠、唯一,并确保业务模块能被接收到。
2.  MSS 与接入网关:
在之前的文章中曾经提到蚂蚁统一接入网关(Accgw):
image.png

Accgw 承接进行了 TLS 卸载、配置管控、动态 UPSTREAM 路由、MMTP 协议解析、数据包压缩、连接保持、流量管控、以及负载均衡等职责,而 MSS(SYNC)即为 UPSTREAM 路由的其中一个渠道,因此,Accgw 所拥有的超级能力完全被 MSS(SYNC)所应用。
3.  MSS 与 MMTP&HTTP2:
MMTP,全称 Mayi Mobile Transport Protocol,即蚂蚁移动传输协议,是基于 TCP 协议研发的私有协议。该协议将网络数据包划分为两类帧:指令帧和数据帧。
指令帧主要实现网络系统内部的控制,包含为了降低设备功耗而设计的智能心跳、方便链接调度的控制指令帧、客户端网络配置帧等;数据帧则用于传输真正的业务数据。MMTP 拥有极简数据大小、高安全、高扩展以及极致的性能,MSS(SYNC)的数据传输同样也是基于 MMTP;
除此之外,为适应行业标准,MSS 一样在复用 MMTP 数据协议的基础上支持了 HTTP2 链路。

总结

MSS(SYNC)在蚂蚁集团内部已经服务于包括支付宝客户端蚂蚁财富香港版支付宝口碑独立客户端口碑商户客户端等多个超级 App,也应用于蚂蚁国际的印度尼西亚、菲律宾、马来西亚、澳门星汇银行等多个国际站点,支撑的业务范围几乎已涵盖蚂蚁所有版块,从支付、社交、营销、智能客服到财富、信用、保险、再到智能发布、智能运维等。

与此同时,SYNC 也参与了集团内多年双十一、双十二、新春红包大促活动,经过多年的优化和提炼,目前已经具备了亿级在线、百万级 TPS 在线推送能力,在集团内部日推送消息量达到千亿级别的巨大规模,已然成为集团 App 不可或缺的核心基础能力,也是 mPaaS 服务组件的一记重拳。

| 移动开发平台 mPaaS 三款组件重磅上线蚂蚁金服开放平台:

往期阅读

《支付宝客户端架构解析:iOS 容器化框架初探》

《支付宝客户端架构解析:Android 容器化框架初探》

《支付宝客户端架构解析:Android 客户端启动速度优化之「垃圾回收」》

《支付宝客户端架构解析:iOS 客户端启动性能优化初探》

关注我们微信公众号「mPaaS」,获得第一手 mPaaS 技术实践干货

目录
相关文章
|
11月前
|
消息中间件 Java Kafka
Java 事件驱动架构设计实战与 Kafka 生态系统组件实操全流程指南
本指南详解Java事件驱动架构与Kafka生态实操,涵盖环境搭建、事件模型定义、生产者与消费者实现、事件测试及高级特性,助你快速构建高可扩展分布式系统。
497 7
|
12月前
|
消息中间件 负载均衡 中间件
⚡ 构建真正的高性能即时通讯服务:基于 Netty 集群的架构设计与实现
本文介绍了如何基于 Netty 构建分布式即时通讯集群。随着用户量增长,单体架构面临性能瓶颈,文章对比了三种集群方案:Nginx 负载均衡、注册中心服务发现与基于 ZooKeeper 的消息路由架构。最终选择第三种方案,通过 ZooKeeper 实现服务注册发现与消息路由,并结合 RabbitMQ 支持跨服务器消息广播。文中还详细讲解了 ZooKeeper 搭建、Netty 集群改造、动态端口分配、服务注册、负载均衡及消息广播的实现,构建了一个高可用、可水平扩展的即时通讯系统。
1198 0
|
机器学习/深度学习 文字识别 监控
安全监控系统:技术架构与应用解析
该系统采用模块化设计,集成了行为识别、视频监控、人脸识别、危险区域检测、异常事件检测、日志追溯及消息推送等功能,并可选配OCR识别模块。基于深度学习与开源技术栈(如TensorFlow、OpenCV),系统具备高精度、低延迟特点,支持实时分析儿童行为、监测危险区域、识别异常事件,并将结果推送给教师或家长。同时兼容主流硬件,支持本地化推理与分布式处理,确保可靠性与扩展性,为幼儿园安全管理提供全面解决方案。
667 3
|
12月前
|
文字识别 运维 监控
架构解密|一步步打造高可用的 JOCR OCR 识别服务
本文深入解析了JOCR OCR识别服务的高可用架构设计,涵盖从用户上传、智能调度、核心识别到容错监控的完整链路,助力打造高性能、低成本的工业级OCR服务。
468 0
架构解密|一步步打造高可用的 JOCR OCR 识别服务
|
消息中间件 人工智能 监控
文生图架构设计原来如此简单之分布式服务
想象一下,当成千上万的用户同时要求AI画图,如何公平高效地处理这些请求?文生图/图生图大模型的架构设计看似复杂,实则遵循简单而有效的原则:合理排队、分工明确、防患未然。
587 14
文生图架构设计原来如此简单之分布式服务
|
机器学习/深度学习 缓存 自然语言处理
深入解析Tiktokenizer:大语言模型中核心分词技术的原理与架构
Tiktokenizer 是一款现代分词工具,旨在高效、智能地将文本转换为机器可处理的离散单元(token)。它不仅超越了传统的空格分割和正则表达式匹配方法,还结合了上下文感知能力,适应复杂语言结构。Tiktokenizer 的核心特性包括自适应 token 分割、高效编码能力和出色的可扩展性,使其适用于从聊天机器人到大规模文本分析等多种应用场景。通过模块化设计,Tiktokenizer 确保了代码的可重用性和维护性,并在分词精度、处理效率和灵活性方面表现出色。此外,它支持多语言处理、表情符号识别和领域特定文本处理,能够应对各种复杂的文本输入需求。
1660 6
深入解析Tiktokenizer:大语言模型中核心分词技术的原理与架构
|
存储 机器学习/深度学习 应用服务中间件
阿里云服务器架构解析:从X86到高性能计算、异构计算等不同架构性能、适用场景及选择参考
当我们准备选购阿里云服务器时,阿里云提供了X86计算、ARM计算、GPU/FPGA/ASIC、弹性裸金属服务器以及高性能计算等多种架构,每种架构都有其独特的特点和适用场景。本文将详细解析这些架构的区别,探讨它们的主要特点和适用场景,并为用户提供选择云服务器架构的全面指南。
1349 18
|
算法 前端开发 定位技术
地铁站内导航系统解决方案:技术架构与核心功能设计解析
本文旨在分享一套地铁站内导航系统技术方案,通过蓝牙Beacon技术与AI算法的结合,解决传统导航定位不准确、路径规划不合理等问题,提升乘客出行体验,同时为地铁运营商提供数据支持与增值服务。 如需获取校地铁站内智能导航系统方案文档可前往文章最下方获取,如有项目合作及技术交流欢迎私信我们哦~
1322 1
|
存储 人工智能 并行计算
2025年阿里云弹性裸金属服务器架构解析与资源配置方案
🚀 核心特性与技术创新:提供100%物理机性能输出,支持NVIDIA A100/V100 GPU直通,无虚拟化层损耗。网络与存储优化,400万PPS吞吐量,ESSD云盘IOPS达100万,RDMA延迟<5μs。全球部署覆盖华北、华东、华南及海外节点,支持跨地域负载均衡。典型应用场景包括AI训练、科学计算等,支持分布式训练和并行计算框架。弹性裸金属服务器+OSS存储+高速网络综合部署,满足高性能计算需求。
|
XML Java 开发者
Spring底层架构核心概念解析
理解 Spring 框架的核心概念对于开发和维护 Spring 应用程序至关重要。IOC 和 AOP 是其两个关键特性,通过依赖注入和面向切面编程实现了高效的模块化和松耦合设计。Spring 容器管理着 Beans 的生命周期和配置,而核心模块为各种应用场景提供了丰富的功能支持。通过全面掌握这些核心概念,开发者可以更加高效地利用 Spring 框架开发企业级应用。
503 18

相关产品

  • 移动开发平台 mPaaS
  • 推荐镜像

    更多
  • DNS