1、汽车之家App架构演进与性能优化历程架构演进与性能优化历程2012年加入汽车之家专注移动开发领域多年,参与汽车之家移动端几次重大的架构变革与设计,从事安卓端的架构与开发,在架构设计,网络,性能,安全方面多领域有较深的理解与研究。CONTENTS一、架构成长史一、架构成长史二、技术保障方案及实施二、技术保障方案及实施三、网络性能优化及手段三、网络性能优化及手段一、架构成长史成长因素成长因素 人员急剧增加人员急剧增加2014开始,人员急剧增加,截止到目前移动主App团队200+人。仅主App的Android开发人员,2015年20+人,2016年达到40+人。业务推进业务推进业务快速发展,各垂直业
2、务快速增长,需求应接不暇。用户增长用户增长目前为止,移动端日活达到近千万架构转变架构转变 技术架构改造技术架构改造2015年开始,汽车之家主App做了一次大型的技术重构。关键词:插件化,hotfix,动态发布 组织架构改造组织架构改造插件独立团队开发。改造出20+插件。团队虚拟垂直化。专人专职。另分配出两个非业务组 开发模式改造开发模式改造解决的问题解决的问题 多团队并行开发 解决65536问题 在线修复bug 动态上线功能新的问题新的问题 整包大小 上线检查 启动速度 线上闪退 权限控制 考核机制 二、技术保障方案及实施控制整包大小控制整包大小 控制安装包大小的意义控制安装包大小的意义 减少
3、下载时间,增加新增用户 提高新版本更新率 控制手段控制手段 定期瘦身 接入检查机制(无效资源检查,无效类检查)动态下载接入及上线检查接入及上线检查-工具工具 组件组件scheme检查检查 export检查检查 权限检查权限检查 进程检查进程检查 组件不存在检查组件不存在检查 版本检查版本检查 无效资源及类检查无效资源及类检查上线自动检查机制上线自动检查机制启动速度启动速度 原因及解决原因及解决 初始化的第三方库过多-线程初始化 进程初始化多次 引入插件化-进程初始化控制-预优化dex(dexopt)-控制通知时机 启动后的通知线上闪退线上闪退 自建分析平台 增加崩溃路径回溯 报警监控 闪退分类
4、 指定用户闪退信息闪退分析平台闪退分析平台-闪退详情闪退详情闪退分析平台闪退分析平台-闪退列表闪退列表闪退分析平台闪退分析平台-闪退分类闪退分类三、网络性能优化及手段用户反馈用户反馈 网络问题 劫持问题网络网络&劫持问题特点劫持问题特点 用户端问题(办公城市无法复现)地域性 周期性以往解决问题的方式以往解决问题的方式 和用户确认环境(地区,时间,网络类型)确认问题原因(给用户打日志包)找运维协调提供商进行排查 找用户测试用户端反馈越来越多,跟踪用户问题变得越来越被动急需一种优雅的方式来改善我们的工作方式平台搭建平台搭建 错误分析 劫持分析 性能分析 地域分析 总体性能 报警监控错误分析错误分析
5、劫持分析劫持分析劫持诊断劫持诊断 劫持分类劫持分类:内容篡改 数据过期 劫持诊断劫持诊断 内容篡改:针对内容做运算,生成唯一值,通过响应头传输给客户端。数据过期:源接口每次输出内容,响应头中输出当前时间,客户端通过判断当前时间和数据时间差值,判断数据过期。地域分析地域分析总体性能总体性能客户端会话负载日志接收服务器日志接收服务器日志接收服务器日志处理服务器ZK+KAFKA CLUSTER日志处理服务器日志处理服务器日志处理服务器GolangGolangGolang处理模块处理日志并发送到ES集群处理模块处理日志并发送到ES集群处理模块处理日志并发送到ES集群DBELASTIC SEARCH CLUSTERMac服务器DSYM堆栈解析VIEW展示(angularjs)性能优化性能优化-httpDns 自解析域名,绕过localDNS 请求成功率提高到99%劫持率下降了一个数量级性能优化性能优化-重试策略重试策略 重试策略 切换节点 随参切换节点40%60%重试成功率性能优化性能优化 通过报警机制对问题快速响应,保证稳定 切换多家CDN-自建 用户反馈大幅减少 报警频率大幅降低切换节点自建CDN60%70%40%60%重试成功率