mPaaS 是源自于支付宝客户端 App 的移动开发平台,为企业提供了移动开发、测试、运营及运维提供云到端的一站式解决方案,mPaaS 能有效下降技术门槛、减小研发成本、提高开发效率,协助企业快速搭建稳定高质量的移动客户端 App。算法
通过《mPaaS 客户端架构解析》系列,咱们已经对 mPaaS 的产品矩阵与具体定位有了初步认识。由本章节开始,咱们将针对 mPaaS 服务端核心组件体系展开梳理和讨论,带领你们进一步认识了解 mPaaS 在服务端组件体系搭建过程当中踩过的坑与相应的实践经验。数据库
mPaaS 针对端上提供了 3 大研发框架:Native 开发框架、H5 开发框架和小程序开发框架,包含了 20 多个功能性组件,100 多个 UI 控件。既然定义为移动研发平台,天然须要坚实的中台能力来支撑期整个客户端生产运营过程,本文旨在介绍 mPaaS 平台后端各组件的核心架构体系;。首先咱们先来看一下 mPaaS 后端的总体架构图:小程序
如图所示,mPaaS的定位为移动端的 PaaS 平台,在他之下是蚂蚁金融云底座,该底座中包含了稳定的硬件环境,可快速的部署网络、存储、数据库等服务,在此环境之上金融云目前配备了分布式的金融级数据库、文件存储、缓存服务、注册中心、配置中心、消息中心、调度中心、监控中心、大数据平台等基础服务,同时还部署了平常运维所需的用户、权限、发布等中枢服务。 mPaaS 则专一于提供移动端所需功能组件,其最核心的为 mAppCenter 控制台和 5 大功能组件:后端
MGS 是链接客户端与服务端 RPC 接口的组件产品,他简化了 RPC 接口的数据协议和通信协议,可以显著提高开发效率和网络通信效率。缓存
MGS 是符合开闭原则的框架化网关,支持多种客户端通信协议:http/https/http2/spdy/mmtp(蚂蚁移动通信协议),能轻松适配多种终端应用,支持多种数据序列化方式:Json、Protobuf。而且拥有统一标准的API接口管控平台,规范的 DevOps 能力:安全
在管控平台是上可方便快捷的进行 RPC 接口管理(增、删、改、上下线),配置完成后可实时的进行 APITest,验证接口是否可按预期完成运行,随后便可快速生成客户端的模型代码,支持 Android、iOS、JS 等多种语言代码生成。针对 RPC 接口 MGS 可对客户端到移动网关的请求进行验签,以验证调用者身份保证安全;服务器
MGS 有足够的自信来支持各类企业级所需的网关平台:网络
MPS 提供了专业的移动消息推送方案,针对不一样的场景推出多种推送类型,知足用户的个性化推送需求,并集成了苹果、华为、小米、FCM 等厂商渠道的推送功能,在提供控制台快速推送能力的同时,也提供了服务端接入方案,方便用户快速集成移动终端推送功能,与用户保持互动,从而有效地提升用户留存率,提高用户体验。架构
MPS 组件的几大核心功能为:并发
经过一个安全的数据通道 TCP+SSL,及时、准确、有序地将服务器端的业务数据,主动的同步(SYNC)到客户端App,是一个客户端与服务端之间的消息中间件。
MSS 用以解决的问题为:
MSS 经过学习 MySQL 数据库的 binlog 原理定义了一个 oplog 概念,服务器和客户端 SDK 之间传递的最小数据单元被称为一个 oplog,每当业务须要同步一个数据变动到指定的用户/设备的时候,业务调用 MSS 服务端的 syndData 接口,MSS 会将业务须要同步的数据变动包装为一个 oplog 持久化到数据库,而后在客户端在线的时候把oplog推送给客户端,若是当前则当即触发推送。每一个 oplog 拥有一个惟一的 oplog id,oplog id 在肯定的用户、肯定的业务范围内保证惟一而且单调递增(按调用顺序)。 MSS 按照 oplog id 从小到大的顺序把每一条 oplog 都推送到客户端。经过 ACK 机制服务端和客户端均会记录客户端已同步数据的最大 oplog id(亦可理解为数据版本),后续产生新数据时进行差量计算和差量同步。
MSS 具有多种推送特性可供选择:
一、指定或全局
二、用户或设备
三、单设备或多设备 假设一个用户有两台设备 A 和 B,则:
四、持久化或非持久化
MSS 在蚂蚁内部已经覆盖了全部的客户 App,近 400 个业务场景,天天数百亿条数级同步至各类客户端,一样支撑了多年的双11、双十 2、春节红包大促等活动,持续保持着 99.9999+% 的可用率,每一个数据包同步至客户端耗时尽仅在毫秒级别,已然是目前超级 App 不可或缺的一个高级组件。
MDS 提供了客户端版本升级包、热修复包、H5离线包、小程序安装包、以及各类资源包、配置项管理和发布的服务。
MDS 发布服务可支持经过白名单配置管理进行指定用户群进行灰度发布,也可使用高级过滤规则,好比指定机型、网络、地域、灰度量来进行更多维度的灰度发布,发布过程也可设定时间窗口;发布过程已可随时终止和回滚至上一稳定版本;为减小数据冗余及设备带宽,MDS 提供了增量差分离线包更新能力,甚至能够在移动端网络条件不稳定场景下依然可提供高效的升级服务;于此同时,为保障安全性,热修复包有自定义的验签流程,可保证脚原本源的正确性,mPaaS 的 IDE 开发插件中也提供生成热修复资源包并对包进行加签的功能。 除此以外,MDS 也具有基于 mPaaS 框架的客户端安装包的编译构建打包能力,用户能够将客户端代码托管在金融科技的 GitLab 上,完成代码管理,而后经过证书管理,构建打包,实时发布等一整套开发发布流程完成最总上线。
MAS 经过对移动客户端、H五、小程序等多端埋点数据的采集与分析,从终端类型、终端版本、地域、网络类型、厂商机型等多个维度展示和分析移动应用数据实现产品核心指标监控,可帮助企业更好地完成业务监控、用户洞察与行为分析,指导产品迭代,精细化产品运营,辅助营销决策,加速业务商业化。 MAS 主要功能包括:
1.基础分析:
关注于 App 的通用分析,包括每日登陆用户、新增用户、使用时长、用户留存、页面分析、访问路径等基础分析。
2.高阶分析:
用于 App 专一业务的特定分析需求,提供一种灵活的多维分析能力;提供热修复报告,帮助您了解 RPC、修复、回滚相关信息等。
3.性能分析:
提供闪退、卡死、卡顿的统计功能。当客户端发生性能问题后,移动分析服务提供实时查看性能分析的统计数据。
4.日志管理:
支持按关键字实时搜索查询日志;经过与 MPS/MSS 等组件功能结合,动态推送指令让客户端实时上传完整日志文件包,用于分析和定位客户端运行情况;此外还可经过服务端开关实时控制客户端日志上报逻辑。
数据链路上(见下图):
在客户端日志模块 SDK 采集到日志文件后,经过 mPaaS 日志网关(mdap)将日志内容输出到服务器日志文件中,随后使用服务端日志读取工具和消息中间件将日志数据按条分别投递到 2 个数据平台(实时计算平台和离线大数据平台)。
实时计算平台核型组件为 Jstorm,JStorm 是一个由阿里云研发的相似 HadoopMapReduce 的系统,开发者经过编写 JStorm 的计算 topology,可将日志文件作不通的计算处理,他具有超强的计算能力,客户端日志数据可在分钟级别内完成数据计算、存储与展现,目前 MAS 中的基础大盘、自定义分析、日志回放等功能数据均由 JStorm 计算产出;
离线大数据平台:
目前主要使用阿里云的 odps 或 spark 来完成(根据实际部署环境来选择),开发这经过编写 SQL 脚本和配置定时调度任务,可完成对超大量级的数据计算,MAS 中的用户行为分析、流存分析、页面漏斗分析等功能则由该平台计算产出。
企业在数据应用的基础上,能够与大数据、营销平台及推送平台结合,根据移动分析获得的埋点数据,经过大数据平台进行打标、圈人、用户画像及建模后,能够在营销平台上发起一次营销活动,指定活动的类型,活动算法,参与人群及活动奖品,经过消息推送、数据同步,动态发布等形式,触达到客户端,实现客户端拉新促活、活动推广及操做引导的目的。同时结合运营活动的场景需求,造成了一套完整的数字化运营体系,监控一次运营活动的参与人数、活动发放率、核销率等,观察活动的有效性
此前麦肯锡发布了报告称,在互联网时代,随着中国经济增加进入新常态,传统企业的经营环境日益严峻,大量金融科技公司正在各细分领域威胁传统金融企业的核心业务。传统金融企业面临着史无前例的机遇和挑战,数字化转型迫在眉睫。那么在这样的大背景下,蚂蚁金服 mPaaS 正是各个组织机构作好本身的数字化转型的正确打开方式。
经过本节内容,咱们初步了解了支付宝在服务端如何构建组件体系,并在这过程当中逐步提炼、沉淀相应的能力对外输出。后续咱们将针对具体的组件设计与优化,展开细化的探讨。
相应的技术内核,咱们一样应用在了 mPaaS 并对外输出,欢迎你们上手体验: t.cn/ELBlvEr
关于服务端组件设计的具体思路和实践,一样期待大家的反馈,欢迎一块儿探讨交流。
往期阅读
《支付宝 App 构建优化解析:经过安装包重排布优化 Android 端启动性能》