支付宝钱包流量电量优化实践
刘富康:阿里巴巴支付宝钱包开发工程师,经历并参与了支付宝钱包客户端框架1.0到3.0的演进,对客户端框架和动态加载技术有深刻理解。目前正在负责支付宝钱包监控体系搭建工作。
重点介绍支付宝钱包客户端基于客户端监控体系上,针对流量电量进行专项优化的实践经验。涉及监控日志采集、关键场景分析,流量熔断等内容。以下来分享精彩内容。
平台型移动客户端之痛
平台型移动客户端资源有限,包括它的cpu,它的内存,它的流量,它的电量等,在这样一个资源受限的设备上运行应用时环境是非常复杂的。
对于andriod来说,不能的版本,不同的厂商,兼容性处理也很棘手。
全民移动化,很多业务都在移动设备中开采,诞生了很多超级APP(微信,淘宝),战略的发展都在往平台化去发展,在这个平台上就运行了大量的业务。那这个平台就提供了沟通的服务等,监控也是平台的一部分。
客户端监控跟后端数据监控不一样,客户端要解决本身的问题,客户端在用户手里不可触达,环境复杂;客户端出现问题不可逆,需要在问题发生之前解决问题。
客户端全面监控体系
客户端全面监控体系由全面诊断,快速诊断,动态升级三个部分构成。
全面监控及时发现问题:监控指标来源于客户端,客户端监控日志上报给服务端;实时报警系统,数据采集上来后分析,分析出问题就要报警出来;多维度监控,上报体系灵活。
整个的监控在独立的进程中上传,为了不耗流量电量,采用一个灵活的采集策略配置,实时监控的依据是纵向横向的对比,数据的采集包括流量、电量、H5加载速度、RPC调用、启动速度等,它们的采集方式也不一样。
快速诊断,准确分析问题:面向切面编程,自动化用户行为录制,诊断日志记录和保存,实时推送诊断任务。
诊断日志越详细越好,采取编译期静态服务的方式织入,安全可靠,不依赖语言,不依赖平台,不依赖容器,在编译期覆盖第三方JAR包。图1为是否用AOP变成的一个对比,用AOP技术的在编译期就会把一些逻辑织入进去。
图1
对于用户行为的录制,支付宝钱包现在可以做到自动的录制用户的点击控件的操作,浏览页面的操作。由于日志量非常的大,放在自己的目录上是不合适的,通常放在SDK上进行加密保存,以保证数据安全。按需上传,通过长链接通道推送下去,需要分析的日志辉传上来。系统输出的一些日志在logcat里面,有一种方式可以把logcat带上来,甚至可以把当前日志的内存下载下来。
动态升级,无痛解决问题。动态升级是部分,不是全部,因此需要模块化。插件化,可以不通过客户端单独加载模块,允许某些模块通过后面增量的方式升级上来,在用户不重启的情况下能把模块单独加载起来。
电量流量专项治理
耗电大户,流量熔断,流量清单。
电量很难量化,流量很难控制。
电量与CPU唤醒有关,当系统搜到AlarmManager提醒时,会自动帮你申请wakelock,这是非常重要的一个监控点,通过AOP的方法,能够广播接收器被触发了。此外还有LocationManager,sensorManager等监控管理。WifiLock让wifi模块一直处于活跃状态,wakeLock直接唤醒CPU。通过AOP的方法解决了很多问题。
PPT下载地址:http://club.alibabatech.org/resource_detail.htm?topicId=164