《支付宝客户端架构解析》系列将从支付宝客户端的架构设计方案入手,细分拆解客户端在“容器化框架设计”、“网络优化”、“性能启动优化”、“自动化日志收集”、“RPC 组件设计”、“移动应用监控、诊断、定位”等具体实现,带领你们进一步了解支付宝在客户端架构上的迭代与优化历程。算法
本节将结合禾兮在 OSChina 珠海站现场的分享《移动端分析方案在蚂蚁金服 mPaaS 中的实践》,介绍支付宝客户端自动化日志收集与分析的具体思路。内容将分红三个部分展开:小程序
正如咱们在《开篇 | 模块化与解耦式开发在蚂蚁金服 mPaaS 深度实践探讨》已经对支付宝的架构演变与开发团队规模发展作过介绍:安全
截止目前,在研发上面,支付宝仅 Android、iOS 客户端开发人员近千人,客户端代码行数超过了数百万行,按业务划分的工程数也已近千个,每一个工程都有独立的开发 owner 负责某一个具体的模块。虽然工程师团队及工程量愈加庞大,支付宝依旧可以作到日发布的频率以确保业务快速迭代,同时在业务功能日益复杂的环境,保证 App 闪退率仅 0.01%。性能优化
那么,在如此大致量的用户规模和研发团队下,支付宝又是如何确保用户使用过程当中的用户体验呢?咱们主要从如下两个维度衡量客户端用户体验:服务器
静态:指应用开发过程当中,关注 App 自己的安装包大小、存储、涉及到的用户隐私权限、安全策略等,决定用户是否愿意安装并使用你的应用网络
动态:指应用发布上线后,用户在使用过程当中,App 的启动速度,闪退、卡死卡顿等稳定性数据,网络请求,内存以及电量流量等用户实际的使用感觉 架构
框架治理:并发
业务治理:框架
技术突破:运维
另外,用户使用过程当中 App 的内存、存储、电量及流量等消耗,也是重要的衡量指标。具体的优化点以下:
针对以上每一个优化点,支付宝都投入了大量精力进行研究和实践,启动速度优化的详细内容能够查阅文档《支付宝客户端架构解析:iOS 客户端启动性能优化初探》和《支付宝客户端架构解析:Android 客户端启动速度优化之「垃圾回收」》,其余优化点请持续关注“客户端架构解析”系列文章。
基于这些对用户体验优化的内容,支付宝构建了一套完整的超级 App 线上运维体系,实时监控线上 App 发生的异常问题,针对这些问题,以最快的时间定位问题缘由并找到对应的解决方案,最后经过动态热修复的技术及时修复线上问题,最终造成一个线上质量保障的闭环,保障应用运行的稳定性。
接下来,详细介绍超级 App 运维体系中的移动监控框架具体是如何实现的。 移动分析 MAS(Mobile Analysis Service)经过对移动客户端、H五、小程序、PC等多端埋点数据的采集与分析,实现产品核心指标监控,提供页面、设备、留存、性能等基础分析,并支持自定义事件分析、漏斗分析等高阶分析,帮助企业更好地完成业务监控、用户洞察与行为分析,指导产品迭代,精细化产品运营,辅助营销决策,加速业务商业化。主要分为如下四个阶段:
整个移动分析的完整链路从左往右看,就是客户端经过调用埋点 SDK的接口进行数据埋点,埋点 SDK 对日志进行格式化后,先写入客户端本地文件,知足日志上报触发条件后,将本地日志上报到日志服务器并清理本地日志文件以减小存储大小;日志服务器接收到客户端上报的日志后同步到计算平台,通过离线计算和实时计算后,将结果进行展现,用来监控、分析、搜索、推荐等。
结合上图,接下来从移动分析框架的四个阶段,详细介绍数据分析的整个链路逻辑。
1. 数据采集
根据采集数据时机、应用场景,最终用途的不一样,咱们把客户端采集的数据分为了如下几类。其中结合 mPaaS 模块化开发框架,报活埋点、押后台埋点、页面自动化埋点、性能埋点及 H5 埋点,由客户端 SDK 自动采集,无需开发者手动调用接口实现,开发者只须要关注本身的业务逻辑,在须要监控的逻辑除埋点统计。
为了下降频繁上报日志对应用性能的影响,客户端采集到数据后,会预先保存在应用本地,经过如下三种方式同步到日志服务器
2. 数据计算
上报到日志服务器的日志,会同步到计算平台进行计算,后台主要包含如下几个系统:
3. 数据应用
计算平台计算出来的结果,能够为用户提供用户分析、事件分析、行为、性能等数据分析服务。
4. 数据决策
在上一步数据应用的基础上,能够与大数据、营销平台及推送平台结合,根据移动分析获得的埋点数据,经过大数据平台进行打标、圈人、用户画像及建模后,能够在营销平台上发起一次营销活动,指定活动的类型,活动算法,参与人群及活动奖品,经过消息推送、数据同步,动态发布等形式,触达到客户端,实现客户端拉新促活、活动推广及操做引导的目的。同时结合运营活动的场景需求,造成了一套完整的数字化运营体系,监控一次运营活动的参与人数、活动发放率、核销率等,观察活动的有效性。
上面介绍的支付宝内移动端分析方案的技术积累和架构实践,已经经过 mPaaS 移动开发平台做为蚂蚁金服金融科技的一部分对外开放。
在 mPaaS 移动开放平台上,咱们将移动分析框架中的本地日志、埋点、自动化埋点、性能监控、Crash报告、诊断日志等模块,做为一个个独立的组件来进行输出。任何一个 App 均可以经过 mPaaS 插件,添加对应的组件,在当前应用中集成这些功能,只须要这样简单的操做,就可让你的应用具备和支付宝同样强大的移动端分析监控能力。
客户端集成了这些移动分析相关的组件后,用户在使用 App 过程当中会产生相应的日志,通过数据采集、数据上报、数据计算等处理后,计算的结果会同步到 mPaaS 移动分析的大盘上展现,包括应用的基础应用概况、性能稳定数据、流量走向等等,方便开发者实时监控 App 的概况大盘和稳定性等,实时发现线上问题并修复。
目前,mPaaS 移动开发平台已经服务了众多企业,包括蚂蚁金服内部的香港支付宝、网商银行、口碑商家等,同时还有大量的外部蚂蚁生态合做伙伴,包括1230六、上海地铁、广州地铁、广发银行等。秉承着「给世界带来小而美的变化」的理念,咱们经过 mPaaS 帮助 12306 这样的国民级 App 重构了客户端,使得你们能够用上一个好的体验的 App 进行出行购票,用 mPaaS 这样成熟的底层框架搭建一个 12306 仅须要 2-3 个月的时间。 除了 12306 还有支付宝香港版,广发银行手机银行和 发现精彩多个客户端,一样在短短几个月的时间内便完成了业务重构。
往期阅读
《开篇 | 模块化与解耦式开发在蚂蚁金服 mPaaS 深度实践探讨》
填写你对移动开发的具体需求和痛点吧,帮助咱们进一步优化 mPaaS 的能力!
即日起截止 11.30 晚 18:00,填写提交 mPaaS 开发者调研问卷,即有机会获取限量版蚂蚁 U 型枕 1 个。 咱们将在掘金平台完成问卷填写的用户中抽取 5 位,赠送蚂蚁公仔限量版 U 型枕。