哈啰出行App首页容器化架构

如果无法正常显示,请先停止浏览器的去广告插件。
分享至:
1. 哈啰出行App首⻚容器化架构 秦阳 哈啰出行平台移动端负责人
2.
3. 如何在工作中实现架构创新
4. • 背景介绍 • 架构设计思想 • 方案落地实践 • 未来展望
5. • 背景介绍 • 架构设计思想 • 方案落地实践 • 未来展望
6. 业务背景 两轮出行 普惠出行 以单⻋,助力⻋为 以快⻋和顺⻛⻋等 主的出行服务,以 四轮出行服务为 及景区校园等特殊 主,扩展到租赁和 场景下的业务拓展 公共交通等业务 生活平台 电商和线下零售 一系列生活服务
7. 首⻚变迁
8. 快速通道 营销活动 便捷操作 情境感知 生活服务 业务宫格 头部推荐 优惠卡券 广告投放 快捷打⻋/购票 福利中心 社区热⻔ 顺⻛⻋-司乘模式 话题投票 公告 扫码 任务 活动大促 单⻋/助力⻋/火⻋票/顺⻛⻋-订单管理 电动⻋⻋主模式 天气 消息中心 用户提示 单⻋/助力⻋模式 商品推荐 用户点评
9. 业务诉求 业务交付效率 问题:多团队协作下,平台资源容易出现瓶颈;测试 发布成本高 更快更好 产品体验 问题:双端、不同业务模块的交互还原不一致;使 用流畅度难以保障
10. • 背景介绍 • 架构设计思想 • 方案落地实践 • 未来展望
11. 技术目标 研发效率 支持业务隔离和标准化的接入方式,具备配置化、跨 平台、动态化能力,有较高的复用性 更快更好 高可用性保障 具备高性能和高稳定性,支持降级
12. 端容器 ๏ 容器: 标准的、隔离的虚拟化技术,具备独 立运行的环境 ๏ 容器的粒度: 承载首⻚、业务一级⻚面等聚合业务 场景的⻚面容器 ๏ 实现方式: ROI: 原生技术 VS 跨端技术 中间件 服 务 端 客 户 端 业务微服务 BFF ⻚面 A CDN 路由 容器 路由 组件化框架 ⻚面 C
13. 架构设计 业务层 业务宫格 订单 活动广告 卡券 本地生活 监控层 其他 模块仓库 流畅度 崩溃 加载速度 宫格 活动 动态化模块 网络 数据错误 流量 表单 公告 ... 容器框架 渲染层 配置解析 模块管理 协议层 布局管理 UI框架 Data Event LifeCycle Adapter 系统能力 基础能力 逻辑层 缓存管理 更新管理 事件总线 容器管理器 基础组件 外部依赖 蓝牙 定位 RPC 路由 网络 存储 地图 iOS依赖 电话 摄像机 Web 通用UI 基础方法库 统计监控 ... 安卓依赖
14. 容器框架 ๏ 监控层 容器各项性能指标、稳定性指标的监 控能力 ๏ 协议层 提供标准化的容器能力接口和模块接 入方式,如布局协议、扩展能力等 ๏ 逻辑层 提供容器状态、数据、通信等运行时 管理能力 ๏ 渲染层 实现容器和模块的样式和布局 监控层 协议层 逻辑层 渲染层
15. 渲染层-容器 ๏ 容器的渲染 元素 模块仓库 布局 动 态 模 块 原生UI框架+自定义的布局协议 模 块 配置解析器 FlowLayoutAdapterProtocal UICollectionView VLayout 容 器
16. 渲染层-静态模块 ๏ 静态模块 元素 模块仓库 布局 动 态 模 块 模 块 ๏ 显示过程 配置解析器 FlowLayoutAdapterProtocal UICollectionView 端上原生代码实现的模块 不具备动态更新的能力 如宫格、瀑布流、滚动条等 VLayout 容 器 1 配置解析器获取模块类型 2 如果是静态模块,从模块仓库获取模 块的对象信息进行创建并放入容器 3 获取业务数据并赋值
17. 渲染层-动态模块 ๏ 收益 元素 模块仓库 布局 动 态 模 块 业务配置化,交互统一,提高效率 模 块 重展示,轻交互 ๏ 实现方式 配置解析器 Widget Tree + Action ✅ AST ❎ FlowLayoutAdapterProtocal UICollectionView ๏ 适用场景 VLayout 容 器
18. 动态模块-Widget Widget Tree container 配 置 信 息 Widget text text container Layout img text
19. 动态模块-Layout 属性 配 置 信 息 Widget Layout 描述 flexDirection 主轴的方向 justifyContent item在主轴上的对⻬方式 alignItem item在交叉轴上的对⻬方式 position 布局方式 width 宽度 height 高度 margin 外边距 padding 内边距 flexGrow item放大比例 flexShrink item的缩小比例
20. 配 置 信 息 Widget Tree Layout 动态模块解析 ๏ 动态模块渲染 1 配置解析器获取模块类型 2 如果动态模块,获取模块的Widget Tree和布局 信息,采用preload和缓存的机制提高性能 3 根据Widget Tree和布局信息动态搭建原生视图 4 获取业务数据并赋值 ๏ 动态模块交互响应 1 Widget的action属性是一个url,表示交互响应的 方式 Action解析 用户交互
21. 逻辑层 ๏ 提供容器状态、数据、通信等运行时管理能力 模块运行时 模块通信 容器管理
22. 逻辑层-工作流 容器管理 模块A 活动模块B 模块注册 A创建 数据处理 事件监听 B创建 模块加载 显示 事件监听 事件总线 缓存管理 隐藏 事件触发 销毁
23. 协议层 Layout ๏ 容器布局协议 单元格大小 单元格横向和纵向边距 分组的间距 头部/尾部的大小 Data Lifecycle Protocol Event Adapter+
24. 协议层 Layout ๏ 容器数据协议 分组/单元格数量 单元格内容 头部/尾部的内容 Data Lifecycle Protocol Event Adapter+
25. 协议层 Layout ๏ 生命周期协议 创建 - 显示 - 刷新 - 消失 - 销毁 ๏ 应用场景 Data Lifecycle Protocol 性能监控 曝光计算 Event Adapter+
26. 协议层 Layout ๏ 事件协议 事件总线监听(模块事件,定时器等) Data Lifecycle Protocol Event Adapter+
27. 协议层 Layout ๏ 扩展协议 错误降级 定时器启动和关闭 其他 Data Lifecycle Protocol Event Adapter+
28. 工作流 ·
29. 监控层 ๏ 监控层 质量指标的监控和归因分析 三大⻩金指标 健康分 归因分析 归因分析 健康分 流量 异常 性能 PV/UV 崩溃率 加载时⻓ 版本 网络错误 网络延迟 设备 业务错误 其他 APM
30. 监控层 ๏ 健康分 ⻚面维度的质量评分,体现各项技术指 标现状和目标的差距 健康分 = x 单项指标的现状,y 单项指标的目标 例如,⻚面加载速度的理想目标是1s, 当前⻚面的数值区间(1.2s-1.5s), 单项得 分80分,再和网络延迟、错误率等指标 得分一起加权平均得到⻚面健康分
31. 监控层 ๏ 健康分应用 健康分是⻚面用户体验的技术估分 经验区间估分法,数值相对稳定 ⻚面之间的分数没有参照性
32. 归因分析 ๏ 网络分析 分阶段 DNS-TCP-SSL-HTTP 错误类型:超时问题 接口:发现曝光埋点问题 流量:业务数据压缩
33. • 背景介绍 • 架构设计思想 • 方案落地实践 • 未来展望
34. 三要素 架构 场景、目标和实现 工具 优化使用效率,辅助调试分析 标准 开发、测试、发布标准
35. 基础技术支撑
36. 首⻚技术标准 开发 测试 发布 UI | 慢函数 | 接口调用 | 定时器 权限 | 启动任务 | IO管理 变更管控 | 专项回归 灰度监控 | AB测试 | 降级容灾 1 2 3
37. 标准实施 ๏ 标准制定的思路 问题导向:弥补研发-测试-发布的流程的不足 目标导向:约束变更的影响程度和范围 UI 逻辑 组件 ๏ 标准实施的经验 数据驱动,工具提效,先易后难,责权明确 基础库 依赖集 系统环境
38. 调试分析 监控平台 配置平台 静态检查 生成二维码 创建模块配置 开发 获取模块配置 扫码模块信息 开发模块 开始调试 上 传 数 据 性 能 对 比 提 交 代 码
39. 项目历程 首⻚改造 项目启动 容器框架完成,支持10+模 ⻚面改造,增加业务场景 块,交互体验升级,建设配 置后台。 201912 2020H1 系统优化 业务能力丰富,配置中心升级 打通数据链路;完善首⻚技术 架构升级 加强动态化能力,增加模块 监控和降级,云-端一体化研 发, 标准,扩展协议层,性能优化 2020H2 2021
40. 项目收益 1 2 3 研发效率提升 Less is more, 新架构下业务配置能力和动态化能力提升,平台端开发资源 的依赖度降低,协作成本降低 稳定性保障提升 更细粒度和全面的监控体系;动态更新能力和降级能力;填补研发测试规范 的不足 体验提升 持续优化性能,首⻚TTI下降40%;模块开发标准化,交互还原质量提升
41. 总结 场景 问题 方法 流程 效果 渲染 研发瓶颈 体验保障 架构 提效 逻辑 体验 协议 稳定 标准 工具 扩展
42. • 背景介绍 • 架构设计思想 • 方案落地实践 • 未来展望
43. 未来展望 低代码平台 • 动态性 • 配置能力 • 场景扩展 端智能 • 推荐决策 • 实时性 • 端侧算力 配置平台 组件区 布局设计台 配置区
44.

Home - Wiki
Copyright © 2011-2024 iteam. Current version is 2.137.1. UTC+08:00, 2024-11-16 23:52
浙ICP备14020137号-1 $Map of visitor$