SEO外包平台,我们为您提供专业的企业网站SEO整站优化外包服务 SEO设置

SEO外包平台

专注于企业网站SEO整站优化外包服务

*** 次数:51505 已用完,请联系开发者*** [光年seo日志分析]支付宝客户端架构分析:自动化日志收集及分析

作者:八月      发布时间:2021-05-01      浏览量:0
​​ 小蚂蚁说:《支付宝客户端架构

​​ 小蚂蚁说:

《支付宝客户端架构解析》系列将从支付宝客户端的架构设计方案入手,细分拆解客户端在“ 容器化框架设计 ”、“ 网络优化 ”、“ 性能启动优化 ”、“ 自动化日志收集 ”、“ RPC 组件设计 ”、“ 移动应用监控、诊断、定位 ”等具体实现,带领大家进一步了解支付宝在客户端架构上的迭代与优化历程。

本节将结合禾兮在 OSChina 珠海站现场的分享《移动端分析方案在蚂蚁金服 mPaaS 中的实践》,介绍支付宝客户端自动化日志收集与分析的具体思路。内容将分成三个部分展开:

一、支付宝客户端分析方案的探索

正如我们在《开篇 | 模块化与解耦式开发在蚂蚁金服 mPaaS 深度实践探讨》已经对支付宝的架构演变与开发团队规模发展做过介绍:

截止目前,在研发上面,支付宝仅 Android、iOS 客户端开发人员近千人,客户端代码行数超过了数百万行,按业务划分的工程数也已近千个,每个工程都有独立的开发 owner 负责某一个具体的模块。虽然工程师团队及工程量越发庞大,支付宝依旧能够做到日发布的频率以确保业务快速迭代,同时在业务功能日益复杂的环境,保证 App 闪退率仅 0.01%。

那么,在如此大体量的用户规模和研发团队下,支付宝又是如何确保用户使用过程中的用户体验呢?我们主要从以下两个维度衡量客户端用户体验:

梳理启动流程并重构,遵守启动过程中按需加载原则。

引用 Pipeline 机制,根据业务优先级规定业务初始化时机。

制定统一的开发规范,尽量降低业务方流程对启动性能的影响。

按需加载,延时执行。

线程治理:统一管理已有线程,并调整线程优先级。

防止启动过程中的 UI 重刷操作。

虚拟机优化,包括 JIT 关闭,降低 GC 次数。

基础模块调优,分析主线程耗时操作并优化。

另外,用户使用过程中 App 的内存、存储、电量及流量等消耗,也是重要的衡量指标。具体的优化点如下:

内存分析:memtrace hprof 线下内存分析,遍历对象,根据生命周期标记内存泄露,同时根据 object 创建引用确定业务归属。

Native 内存:图像库切换到 native 层,4.x bitmap 像素数据放到 ashme 共享内存,降低 GC。

内存优化:对象池复用,减小 bitmap 对内存占用,使用更小的图,尤其注意三方 H5 页面。

存储分析:查看应用存储大小。

存储优化:使用共享库,业务定向优化,压缩存储等。

耗流量原因:分析各种网络请求。

流量异常捕获:hook 所有网络请求,根据host聚合流量,超过阈值确定异常。

流量优化:PC 底层协议优化,资源增量按需下载,同时通过切面信息调用方。

耗电原因:监控 CPU 使用率,各种 sensor、gps、weaklock、网络连接等耗电操作。

耗电异常捕获:遍历线程,获取所有线程运行时间,与主线程比较确定异常。

耗电优化:高性能 dump 线程栈优化,通过线程映射调用方,评估调用逻辑进行优化。

基于这些对用户体验优化的内容,支付宝构建了一套完整的超级 App 线上运维体系,实时监控线上 App 发生的异常问题,针对这些问题,以最快的时间定位问题原因并找到对应的解决方案,最后通过动态热修复的技术及时修复线上问题,最终形成一个线上质量保障的闭环,保障应用运行的稳定性。

二、MAS移动分析框架浅析

接下来,详细介绍超级 App 运维体系中的移动监控框架具体是如何实现的。

移动分析 MAS(Mobile Analysis Service)通过对移动客户端、H5、小程序、PC等多端埋点数据的采集与分析,实现产品核心指标监控,提供页面、设备、留存、性能等基础分析,并支持自定义事件分析、漏斗分析等高阶分析,帮助企业更好地完成业务监控、用户洞察与行为分析,指导产品迭代,精细化产品运营,辅助营销决策,加速业务商业化。主要分为以下四个阶段:

整个移动分析的完整链路从左往右看,就是客户端通过调用埋点 SDK 的接口进行数据埋点,埋点 SDK 对日志进行格式化后,先写入客户端本地文件,满足日志上报触发条件后,将本地日志上报到日志服务器并清理本地日志文件以减少存储大小;日志服务器接收到客户端上报的日志后同步到计算平台,经过离线计算和实时计算后,将结果进行展示,用来监控、分析、搜索、推荐等。

接下来我们将从移动分析框架的四个阶段,详细介绍数据分析的整个链路逻辑。

数据采集

为了降低频繁上报日志对应用性能的影响,客户端采集到数据后,会预先保存在应用本地,通过以下三种方式同步到日志服务器:

程序每次冷启动都会触发检查日志上报的逻辑。

程序进入后台会立即触发上报。

写日志时,某种类型的日志默认到达 40 条就触发上报。

数据计算

上报到日志服务器的日志,会同步到计算平台进行计算,后台主要包含以下几个系统: