支付宝客户端架构分析:自动化日志收集及分析

栏目: 后端 · 发布时间: 5年前

内容简介:《支付宝客户端架构解析》系列将从支付宝客户端的架构设计方案入手,细分拆解客户端在“本节将结合禾兮在 OSChina 珠海站现场的分享《移动端分析方案在蚂蚁金服 mPaaS 中的实践》,介绍支付宝客户端自动化日志收集与分析的具体思路。内容将分成三个部分展开:正如我们在

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

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

  • 支付宝客户端分析方案的探索;
  • MAS 移动分析框架浅析;
  • mPaaS 技术架构与助力。

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

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

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

支付宝客户端架构分析:自动化日志收集及分析

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

  • 静态:指应用开发过程中,关注 App 本身的安装包大小、存储、涉及到的用户隐私权限、安全策略等,决定用户是否愿意安装并使用你的应用

  • 动态:指应用发布上线后,用户在使用过程中,App 的启动速度,闪退、卡死卡顿等稳定性数据,网络请求,内存以及电量流量等用户实际的使用感受

    支付宝客户端架构分析:自动化日志收集及分析
    启动应用是用户使用任何一款应用最必不可少的操作,从点击 App 图标到首页展示,整个启动过程的性能,严重影响着用户的体验,支付宝客户端作为一个超级 App,启动速度当然是我们关注的重要指标之一。支付宝对于应用启动过程中的优化,主要分为以下四个方面:
  • 框架治理:

    • 梳理启动流程并重构,遵守启动过程中按需加载原则
    • 引用 Pipeline 机制,根据业务优先级规定业务初始化时机
    • 制定统一的开发规范,尽量降低业务方流程对启动性能的影响
  • 业务治理:

    • 按需加载,延时执行
    • 线程治理:统一管理已有线程,并调整线程优先级
    • I/O 治理:关注主线程 I/O,优化合并频繁读写的 I/O 操作,尽量使用统一存储
  • 技术突破:

    • 防止启动过程中的 UI 重刷操作
    • 虚拟机优化,包括 JIT 关闭,降低 GC 次数
    • 基础模块调优,分析主线程耗时操作并优化

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

  • 内存
    • 内存分析 :memtrace hprof 线下内存分析,遍历对象,根据生命周期标记内存泄露,同时根据 object 创建引用确定业务归属
    • Native 内存 :图像库切换到 native 层,4.x bitmap 像素数据放到 ashme 共享内存,降低 GC
    • 内存优化 :对象池复用,减小 bitmap 对内存占用,使用更小的图,尤其注意三方 H5 页面
  • 存储
    • 存储分析 :查看应用存储大小
    • 存储优化 :使用共享库,业务定向优化,压缩存储等
  • 流量
    • 耗流量原因 :分析各种网络请求
    • 流量异常捕获 :hook 所有网络请求,根据host聚合流量,超过阈值确定异常
    • 流量优化 :PC 底层协议优化,资源增量按需下载,同时通过切面信息调用方
  • 电量
    • 耗电原因 :监控 CPU 使用率,各种 sensor、gps、weaklock、网络连接等耗电操作
    • 耗电异常捕获 :遍历线程,获取所有线程运行时间,与主线程比较确定异常
    • 耗电优化 :高性能 dump 线程栈优化,通过线程映射调用方,评估调用逻辑进行优化
支付宝客户端架构分析:自动化日志收集及分析

针对以上每个优化点,支付宝都投入了大量精力进行研究和实践,启动速度优化的详细内容可以查阅文档 《支付宝客户端架构解析:iOS 客户端启动性能优化初探》《支付宝客户端架构解析:Android 客户端启动速度优化之「垃圾回收」》 ,其他优化点请持续关注“客户端架构解析”系列文章。

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

支付宝客户端架构分析:自动化日志收集及分析

MAS 移动分析框架浅析

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

支付宝客户端架构分析:自动化日志收集及分析

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

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

1. 数据采集

根据采集数据时机、应用场景,最终用途的不同,我们把客户端采集的数据分为了以下几类。其中结合 mPaaS 模块化开发框架,报活埋点、押后台埋点、页面自动化埋点、性能埋点及 H5 埋点,由客户端 SDK 自动采集,无需开发者手动调用接口实现,开发者只需要关注自己的业务逻辑,在需要监控的逻辑除埋点统计。

支付宝客户端架构分析:自动化日志收集及分析

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

  • 自动上报 :满足一定条件后自动上报
    • 程序每次冷启动都会触发检查日志上报的逻辑。
    • 程序进入后台会立即触发上报。
    • 写日志时,某种类型的日志默认到达 40 条就触发上报。
  • 实时监控 :对于比较重要的客户端日志,如异常、应用闪退日志等,可实时上报,产生一条上报一条,便于后台实时监控。
  • 动态控制 :在自动上报的基础上,通过服务端下发的开关值,修改客户端日志写入和日志上报触发的条件。如在大流量并发的情况下,为减少日志服务器的压力,控制客户端只写入并上报异常或闪退日志,忽略行为日志的统计。

2. 数据计算

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

  • mdap :日志采集网关,负责收集客户端埋点日志,收到日志后,直接传输至 JStorm 集群进行计算。
  • JStorm :实时计算引擎,根据处理规则对日志进行实时解析并将需要的数据存储入库。
  • SSDB : kv 数据存储层,底层使用 leveldb,支持单表十亿级记录。
  • ZooKeeper :集群管理、组件间服务发现。
支付宝客户端架构分析:自动化日志收集及分析

3. 数据应用

计算平台计算出来的结果,可以为用户提供用户分析、事件分析、行为、性能等数据分析服务。

  • 基础分析 : 关注于 App 的通用分析,包括每日登录用户、新增用户、使用时长、用户留存、页面分析、访问路径等基础分析。
  • 高阶分析 : 用于 App 专注业务的特定分析需求,提供一种灵活的多维分析能力;提供热修复报告,帮助您了解 RPC、修复、回滚相关信息等。
  • 性能分析 : 提供闪退、卡死、卡顿的统计功能。当客户端发生性能问题后,移动分析服务提供实时查看性能分析的统计数据。
  • 日志管理 : 支持按关键字实时搜索查询日志,或通过服务端开关实时控制客户端日志上报逻辑。
支付宝客户端架构分析:自动化日志收集及分析

4. 数据决策

在上一步数据应用的基础上,可以与大数据、营销平台及推送平台结合,根据移动分析得到的埋点数据,通过大数据平台进行打标、圈人、用户画像及建模后,可以在营销平台上发起一次营销活动,指定活动的类型,活动算法,参与人群及活动奖品,通过消息推送、数据同步,动态发布等形式,触达到客户端,实现客户端拉新促活、活动推广及操作引导的目的。同时结合运营活动的场景需求,形成了一套完整的数字化运营体系,监控一次运营活动的参与人数、活动发放率、核销率等,观察活动的有效性。

支付宝客户端架构分析:自动化日志收集及分析

mPaaS 技术架构与助力

上面介绍的支付宝内移动端分析方案的技术积累和架构实践,已经通过 mPaaS 移动开发平台作为蚂蚁金服金融科技的一部分对外开放。

支付宝客户端架构分析:自动化日志收集及分析

在 mPaaS 移动开放平台上,我们将移动分析框架中的本地日志、埋点、自动化埋点、性能监控、Crash报告、诊断日志等模块,作为一个个独立的组件来进行输出。任何一个 App 都可以通过 mPaaS 插件,添加对应的组件,在当前应用中集成这些功能,只需要这样简单的操作,就可以让你的应用具有和支付宝一样强大的移动端分析监控能力。

支付宝客户端架构分析:自动化日志收集及分析

客户端集成了这些移动分析相关的组件后,用户在使用APP过程中会产生相应的日志,经过数据采集、数据上报、数据计算等处理后,计算的结果会同步到 mPaaS 移动分析的大盘上展示,包括应用的基础应用概况、性能稳定数据、流量走向等等,方便开发者实时监控 APP 的概况大盘和稳定性等,实时发现线上问题并修复。

支付宝客户端架构分析:自动化日志收集及分析
支付宝客户端架构分析:自动化日志收集及分析

目前,mPaaS 移动开发平台已经服务了众多企业,包括蚂蚁金服内部的香港支付宝、网商银行、口碑商家等,同时还有大量的外部蚂蚁生态合作伙伴,包括12306、上海地铁、广州地铁、广发银行等。秉承着「给世界带来小而美的变化」的理念,我们通过 mPaaS 帮助 12306 这样的国民级 App 重构了客户端,使得大家可以用上一个好的体验的 App 进行出行购票,用 mPaaS 这样成熟的底层框架搭建一个 12306 仅需要 2-3 个月的时间。 除了 12306 还有 支付宝香港版广发银行手机银行发现精彩 多个客户端,同样在短短几个月的时间内便完成了业务重构。

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

支付宝客户端架构分析:自动化日志收集及分析

号外!问卷调研

填写你对移动开发的具体需求和痛点吧,帮助我们进一步优化 mPaaS 的能力!

即日起截止 11.30 晚 18:00,填写提交mPaaS 开发者调研问卷,即有机会获取限量版蚂蚁 U 型枕 1 个。 我们将在掘金平台完成问卷填写的用户中抽取 5 位,赠送 蚂蚁公仔限量版 U 型枕

支付宝客户端架构分析:自动化日志收集及分析

以上所述就是小编给大家介绍的《支付宝客户端架构分析:自动化日志收集及分析》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

30天自制操作系统

30天自制操作系统

[日] 川合秀实 / 周自恒、李黎明、曾祥江、张文旭 / 人民邮电出版社 / 2012-8 / 99.00元

自己编写一个操作系统,是许多程序员的梦想。也许有人曾经挑战过,但因为太难而放弃了。其实你错了,你的失败并不是因为编写操作系统太难,而是因为没有人告诉你那其实是一件很简单的事。那么,你想不想再挑战一次呢? 这是一本兼具趣味性、实用性与学习性的书籍。作者从计算机的构造、汇编语言、C语言开始解说,让你在实践中掌握算法。在这本书的指导下,从零编写所有代码,30天后就可以制作出一个具有窗口系统的32位......一起来看看 《30天自制操作系统》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

URL 编码/解码
URL 编码/解码

URL 编码/解码

MD5 加密
MD5 加密

MD5 加密工具