UC浏览器容器化架构演进之路 顾辉 阿里巴巴

2020-03-01 605浏览

  • 1.UC浏览器器客户端容器器化架 构演进 阿⾥里里UC 顾辉
  • 2.
  • 3.
  • 4.
  • 5.顾辉 负责UC浏览器器客户端 2011~2013:参与百度多款⽆无线产品开发和性能优化 2013⾄至今:参与UC浏览器器客户端业务开发,性能优化,架构演进 2016年年:开始负责整个UC客户端。 2017年年⾄至今:UC⽆无线技术⼩小组组⻓长
  • 6.• UC国际化和内容化带来的挑战 • 三⼤大客户端容器器技术赋能UC业务 • 客户端容器器化后的质量量保障
  • 7.UC浏览器器产品⼤大家庭 UCNews • • • • UC头条 深度本地化让国内/国际版本相似度 ⾼高,⼜又有⾜足够的差异 UC头条帮助UC浏览器器由⼯工具向内容 平台升级,UC头条是浏览器器的⼀一个 核⼼心模块,同时⼜又是独⽴立App ⽩白牌浏览器器 UC浏览器器 极简⽽而强⼤大的夸克浏览器器 为⼚厂商⾼高度定制的⽩白牌浏览器器 UCBrowser 夸克浏览器器
  • 8.UC Browser ⾃自媒体Super UCNews 国际化:GLocal 3B 电商⽕火⻋车票 ⽹网址访问 UC订阅 3A 加速省流 公域⽹网⻚页浏览器器增强 • 代码同步很原始 • AB Test • 加卡⽚片,依赖发版本 UC头条 视频 2 ⼩小说 搜索 1 分库:拷⻉贝代码独⽴立演进 短视频 印度板球 视频 • ⼩小说视频 内容/私域内容 信息流 内容⽣生态
  • 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 (内部) •共享宿主的上下⽂文 •根据导出类⾃自动加载 •资源分区 LoadedApk Service Activity Receiver (协作⽅方) PathClassLoader PackageName Context Module Resources •独⽴立宿主的上下⽂文 •组件启动⾃自动加载
  • 13.Aerie 2.0 (2015.4~2016年年底) 组件抽取 类型 解耦不不彻底 组件 共12个:location、novel、picview、share、skin、login、wifisdk、 Fragment组件 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 ⼩小说 漫画 (整包部署) aerie-core 基础服务层 account 基础组件层 uiFramework 地图 定位 unet image loader aerie-update event bus downloader … UC头条 aerie容器器 ModuleClassloader Service 容器器层 神⻢马 搜索 aerie-loader upgrade barcode wa monitor …
  • 17.Aerie 3.0 部署⼯工具链 A U / / A P / V
  • 18.Aerie 3.0 • • • • 多产品通过maven依赖共同的组件,组件负责⼈人 Android端发布能⼒力力⼤大⼤大提升:实现周发布、版本覆盖速度⼀一天超过75%、 每天班⻋车灰度 ⼩小说/漫画等业务独⽴立⼯工程开发,可测性、效率⼤大⼤大提升,解决了了⼤大团队协 同开发效率的问题 对App性能影响⾮非常⼩小
  • 19.UC-Weex容器器 2015年年~2016年年 2016年年 2017年年 ReactNative Weex UC-Weex 动态化⽅方案初探 轻量量级解决⽅方案 多业务多场景使⽤用 UC订阅号项⽬目 集团技术交流 实体团队模式
  • 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.总结 • 客户端的容器器和通道能⼒力力能解放⽣生产⼒力力 • 动态化技术要找准适⽤用场景,多⽅方案共⽤用 • 技术架构、⼯工程架构、团队架构要协同演进 • ⼤大前端的团队能够进⼀一步提升效率,需要团队成员⼀一专多能,对于技术 主管的技术全⾯面性要求更更⾼高
  • 37.