阿里UC 顾辉 - UC浏览器客户端容器化架构演进

鞠语彤

2017/12/18 发布于 技术 分类

ArchSummit全球架构师峰会是InfoQ中国团队推出的面向高端技术管理者、架构师的技术大会,参会者中超过50%拥有8年以上的工作经验。 ArchSummit秉承“实践第一、案例为主”的原则,展示新技术在行业应用中的最新实践,技术在企业转型中的加速作用,帮助企业技术管理者、CTO、架构师做好技术选型、技术团队组建与管理,并确立技术对于产品和业务的关键作用。

文字内容
1. UC浏览器器客户端容器器化架 构演进 阿⾥里里UC 顾辉
5. 顾辉 负责UC浏览器器客户端 2011~2013:参与百度多款⽆无线产品开发和性能优化 2013⾄至今:参与UC浏览器器客户端业务开发,性能优化,架构演进 2016年年:开始负责整个UC客户端。 2017年年⾄至今:UC⽆无线技术⼩小组组⻓长
6. • UC国际化和内容化带来的挑战 • 三⼤大客户端容器器技术赋能UC业务 • 客户端容器器化后的质量量保障
7. UC浏览器器产品⼤大家庭 • 深度本地化让国内/国际版本相似度 ⾼高,⼜又有⾜足够的差异 • UC头条帮助UC浏览器器由⼯工具向内容 平台升级,UC头条是浏览器器的⼀一个 核⼼心模块,同时⼜又是独⽴立App • 极简⽽而强⼤大的夸克浏览器器 • 为⼚厂商⾼高度定制的⽩白牌浏览器器 UC头条 UCNews ⽩白牌浏览器器 UC浏览器器 UCBrowser 夸克浏览器器
8. UC Browser 国际化:GLocal ⾃自媒体Super UCNews 3B 电商⽕火⻋车票 印度板球 视频 3A 短视频 UC订阅 UC头条 ⽹网址访问 搜索 2 视频 ⼩小说 1 加速省流 ⼩小说视频 公域⽹网⻚页浏览器器增强 内容/私域内容 信息流 内容⽣生态 • 分库:拷⻉贝代码独⽴立演进 • 代码同步很原始 • AB Test • 加卡⽚片,依赖发版本
9. 挑战 多App研发 成本⾼高 组件复⽤用 跨平台 内容对动态化 要求⾼高 依赖发版本 写死
10. Aerie组件框架 (鹰巢) 乐⾼高积⽊木
11. Aerie 1.0 (2014.10) 线性内存问题、⽅方法数问题、国内国际分库后的组件复⽤用 插件框架 组件抽取 • ⽀支持move2dex的dex从assets中解压,并加 • 不不包含资源,编译时move2dex,解耦度不不⾼高 载(合并代码到PathClassLoader) • 开始抽取基础的组件和服务:⽇日志、升级等 • ⽀支持从ClassLoader中loadClass⾃自动加载组件 • ⽀支持mH注⼊入点,dex中的Android 组件启动时 ⾃自动加载组件
12. Aerie 2.0 (2015.4) • 引⼊入OSGI规范,⽀支持Fragment和Module两种业务组件类型 • HOOK AMS,兼容性更更好,Classloader依赖模型,资源管理理 • ⽀支持远程组件、增量量更更新 Fragment (内部) Module (协作⽅方) •共享宿主的上下⽂文 •根据导出类⾃自动加载 •资源分区 •独⽴立宿主的上下⽂文 •组件启动⾃自动加载 Service Activity Receiver Context LoadedApk Resources PathClassLoader PackageName
13. Aerie 2.0 (2015.4~2016年年底) 组件抽取 类型 解耦不不彻底 组件 Fragment组件 共12个:location、novel、picview、share、skin、login、wifisdk、 push... Moudle组件 共5个:PPSDK、shenma、smmap、barcode、officesdk 服务组件 配置管理理、⽇日志、升级、云同步、⽹网络库、下载…
14. Aerie 2.0 组件框架功能很完备,然⽽而 组件化的速度远远赶不不上业务发展代码膨胀的速度 单靠⼏几个做组件框架的研发是不不可能完成的 于是我们提出了了
15. Aerie 3.0-(航⺟母计划2017.3) ⼯工程化的解决⽅方案,彻底组件化 给⾼高速运⾏行行的⽕火⻋车换轮⼦子 业务/服务 解耦 开源的标准 彻底依赖解耦 Aerie 升级 整包部署 组件部署 部署⼯工具链 升级 ⼀一站式部署 多⼯工程开发
16. Aerie 3.0 效果 业务层 主⻚页 Router ⼩小说 Router 漫画 神⻢马 搜索 地图 定位 UC头条 … 容器器层 (整包部署) Service ModuleClassloader aerie-core aerie-update aerie容器器 aerie-loader 基础服务层 account unet event bus upgrade wa 基础组件层 uiFramework image loader downloader barcode monitor …
17. Aerie 3.0 部署⼯工具链  A U / A / / P V
18. Aerie 3.0 • 多产品通过maven依赖共同的组件,组件负责⼈人 • Android端发布能⼒力力⼤大⼤大提升:实现周发布、版本覆盖速度⼀一天超过75%、 每天班⻋车灰度 • ⼩小说/漫画等业务独⽴立⼯工程开发,可测性、效率⼤大⼤大提升,解决了了⼤大团队协 同开发效率的问题 • 对App性能影响⾮非常⼩小
19. UC-Weex容器器 2015年年~2016年年 ReactNative 2016年年 Weex 动态化⽅方案初探 UC订阅号项⽬目 轻量量级解决⽅方案 集团技术交流 2017年年 UC-Weex 多业务多场景使⽤用 实体团队模式
20. Weex技术架构图
21. UC-Weex容器器 接⼊入 利利⽤用内核优势,Size精简到极致3M->500K 优化 客端-内核-jsfm全链路路诊断,框架稳定性>99.99% 能⼒力力 拓拓展 丰富引擎,⽀支持共享V8 U4 WebView JSC 打通UC体系内Lottie、视频、看图、三端通信等能⼒力力 秒开率 85% V8code cache,动态分包,预加载⽅方案 ⼯工程 引⼊入UC成熟的发布控量量,有效保障质量量,未出现P级事故 效率 完善配套⼯工程化,全链路路效率真正实现翻倍,⽇日覆盖>85%
22. UC-Weex发布平台 上传 JS bundle 上传发布策略略 上传发布数量量 下载升级平台 再发送资源请求
 返回 JS bundle 先发送查询请求
 返回资源信息 发布任务 超⾳音速平台 返回异常数 查询异常 ⽇日志分析平台 客户端 上报异常
23. UC-Weex业务场景
24. UC-Weex容器器 解决了了: 跨平台复⽤用&效率 垂直内容业务的快速探索 ⼤大前端团队融合 没有解决: 与Native完全媲美的交互体验、性能 ⾸首⻚页的动态化
25. ⾸首⻚页/运营的容器器化 不不影响启动速度 没有加载过程
26. UBox容器器 • 静态排版不不依赖js引擎 • 通过简化标签和定制化解 决性能问题 • 复杂交互能⼒力力通过js引擎
27. UBox容器器         
28. UBox容器器 任性运营,更更加活泼和个性化的UC 不不⽌止⾸首⻚页 物料料制作平台
29. 三⼤大容器器 Aerie 组件复⽤用 业务独⽴立演进 动态部署 UC-Weex 三端统⼀一 业务快速迭代 UBox 运营⼊入⼝口 ⾸首⻚页动态化
30. 容器器化后带来的挑战 单⼀一的客户端版本质量量保证 -> ⽴立体化下发的质量量保证 偶发P级事故
31. 容器器化的质量量挑战 • 需求⽅方多、下发频繁、圈⽤用户下发、时间不不可控 • 链路路⻓长、版本多,质量量保障的⼯工作量量⼤大 • 研测同学的思路路转变成本⾼高
32. 容器器化的质量量保障 • 统⼀一发布平台,智能控量量发布,精准快速回滚 • 下发保障系统
33. 控量量发布
34. 控量量规则
35. 下发质量量保障系统 数据测试服务 CMS 闪屏 push 头条内容 UBox数据 patch 构建 主流 版本 版本 hive平台 真机 客户端测试逻辑 QMS平台 结果分析
36. 总结 • 客户端的容器器和通道能⼒力力能解放⽣生产⼒力力 • 动态化技术要找准适⽤用场景,多⽅方案共⽤用 • 技术架构、⼯工程架构、团队架构要协同演进 • ⼤大前端的团队能够进⼀一步提升效率,需要团队成员⼀一专多能,对于技术 主管的技术全⾯面性要求更更⾼高