写点什么

ALive:淘宝双 11 直播,技术同学却可以“偷懒”?(二)

  • 2019-12-17
  • 本文字数:1301 字

    阅读完需:约 4 分钟

ALive:淘宝双11直播,技术同学却可以“偷懒”?(二)

▶ 技术实现

1、直播容器


我们设想的灵活、高效的直播容器,应该具有以下几个特征:


  • 统一规范的组件消息协议:包括组件包名、组件行为、业务自定义字段等,统一由 PowerMessage 的固定消息下发

  • 支持动态加载:直播间不同于其他详情页,互动的发送依赖主播操作,也依赖用户进入直播间的时机,每个用户参与到的互动可能都不一样,所以互动组件的动态加载对首屏性能很关键

  • 缓存及依赖去重:同一个互动,主播可以多次推送,各个互动依赖的基础库(rax-xxx、universal-xxx)也存在较多重复,所以设计合理的缓存和依赖去重机制对性能提升也很重要

  • HOC 高阶组件:直播间里的业务开发不同于其他独立的源码页面,比如直播间数据获取、消息和事件监听、横竖屏状态获取、带小窗跳转、直播观看时长等等都依赖直播间环境或者客户端 API,业务组件都需要这些基础能力,需要通过 HOC 来增强业务组件


基于这些特征设定,我们设计的直播容器技术结构如下:



直播容器的核心工作流程包括以下几点:


  • 消息和指令:容器初始化时从 Native 获取缓存里 Mtop 请求的组件列表,同时消息模块监听 Native 转发的固定消息。协议解析成标准化指令,交给渲染模块执行后续操作

  • 渲染管理:渲染模块接收到创建、更新、销毁组件指令后,传递给组件 HOC,如果是创建组件指令,则从加载引擎拉取组件 bundle

  • 加载引擎:rloader 维护了组件缓存,当拉取的组件不在缓存内时,会解析依赖,优先从缓存的基础依赖里查找基础组件,如果没有则 combo 拼接,最后拉取最小量的组件 bundle,并将拉取的 bundle 加入缓存

  • 组件 HOC:高阶组件除了上述的能力,还提供了 API Bridge、全局变量注入、事件分发以及一些监控容错等机制

2、 ALive 工程体系

笔者加入淘宝直播后接手的第一个项目,是由客户端同学开发的 H5 版本亲密度组件,直播间里的组件开发强依赖客户端环境,当时的开发调试手段只能通过 Charles 代理本地静态资源,没有日志、没有断点、没有 Mock ,开发环境极其恶劣。


引入直播容器后,改善了性能,但是在直播间里开发组件,需要一个完整的直播间环境和直播容器才能开发调试,没有配套的工程体系,组件开发依然很低效。我们设想的 ALive 工程体系,应该包含以下几个部分:


  • ALive def 套件:直播间组件开发脚手架,增强调试能力,包括直播间模拟、调试代理、热更新、编译检测等功能

  • 直播间 Debug 工具:基于直播容器开发一个 Debug 组件,提供日志调试、容器化 API 调用、数据 Mock、消息 Mock 等功能

  • VS Code 插件:直播间 Debug 工具在 PC 端的同等方案,结合模拟器可以独立在 PC 端开发调试


基于这些诉求,我们设计的 ALive 工程体系技术结构如下:



效果演示:组件代码热更新



效果演示:VS Code 插件 Mock 消息



效果演示:VS Code 插件 Mock 直播间数据



▶ 数据表现



业务数据上通过 ALive 开放带来的外部流量早已超过百万 DAU ,每一个对接方都蕴含着一个大的垂直市场。


技术数据上直播容器的稳定性较好,组件的渲染时长由于并发请求限制,还存在一定的优化空间。ALive 工程体系建设带来的提效非常明显,通过团队日常排期表数据粗略统计,开发效能提升大约在 30%左右。


本文转载自淘系技术公众号。


原文链接:https://mp.weixin.qq.com/s/L5lggzXju1ajAjUfaaDGLw


2019-12-17 14:12863

评论

发布
暂无评论
发现更多内容

Git fetch、pull 傻傻分不清楚?

极狐GitLab

git gitlab 代码托管 版本管理

人工智能 | 基于ChatGPT开发人工智能服务平台

测吧(北京)科技有限公司

测试

哈银消费金融彰显责任担当:深化消保政策,稳健前行铸就新辉煌

极客天地

ChatGPT 订阅价或涨到 44 美元;研究称 AI 可 100% 绕过 reCAPTCHA V2 验证丨RTE 开发者日报

RTE开发者社区

技术解读:华为云如何携手昇腾、鸿蒙等根生态,助力开发者技术创新

华为云开发者联盟

华为云 鲲鹏计算 大模型 昇腾

如何建立一个完善的缺陷管理流程?

测吧(北京)科技有限公司

测试

聊聊性能基准测试和容量评估规划

老张

性能测试 容量规划 基准测试

软件测试的对象:从单元到系统,全方位覆盖的测试层级

测吧(北京)科技有限公司

测试

《华为云DTSE》期刊免费下载:10个案例读懂云上架构升级策略

华为云开发者联盟

php 元宇宙 人工智能’ 华为云DTSE 云原生‘’

如何构建高效的用例管理平台:测试过程的全面优化

测吧(北京)科技有限公司

测试

用实力说话!望繁信科技与创鑫激光达成战略合作

望繁信科技

数字化转型 流程挖掘 流程资产 流程智能

联想ThinkPad与英特尔携手亮相2024抖音创作者大会,加速生成式AI创作

科技范儿

Mint 101: 全面解读 Mint Blockchain 生态和参与指南

NFT Research

blockchain NFT\ 空投

基于LangChain手工测试用例转App自动化测试生成工具

测吧(北京)科技有限公司

测试

TDengine 流计算与窗口机制的深度解析:揭示计数窗口的关键作用

TDengine

数据库 tdengine 时序数据库

从基础到进阶:掌握 SQL 索引、事务与锁机制的应用技巧

测吧(北京)科技有限公司

测试

MySQL 高级管理实战指南:性能调优与数据备份的最佳实践

测吧(北京)科技有限公司

测试

Redis: 探索性能最快的内存数据库及其基础操作指南

测吧(北京)科技有限公司

测试

Redis 内存数据存储解析:性能优势与核心使用技巧

测吧(北京)科技有限公司

测试

2024 百度安全月圆满收官:让百度更安全,让用户更放心

百度安全

“2024年网络安全国家标准贯标深度行(互联网行业—百度站)”活动在北京举办

百度安全

DORA指标实施反模式:如何避免正确实施DORA

俞凡

DevOps 最佳实践 DORA

Volcano新版本发布:10大功能提升统一调度和细粒度资源管理能力

华为云开发者联盟

Volcano 批量计算 云原生‘’ #GPU kubernetes pod

这些售后管理的问题,你遇到过多少?

天津汇柏科技有限公司

低代码 软件定制开发 售后 AI 人工智能

缺陷修复之后如何做验证?

测吧(北京)科技有限公司

测试

解读MySQL8.0数据字典重构源码

华为云开发者联盟

MySQL 数据库 innodb 数据字典

深入解析 SQL 优化策略:提高查询效率的关键技术

测吧(北京)科技有限公司

测试

缺陷管理的全面剖析:从发现到修复,优化软件产品质量

测吧(北京)科技有限公司

测试

软件缺陷处理为什么那么重要?

测吧(北京)科技有限公司

测试

缺陷处理流程的最佳实践

测吧(北京)科技有限公司

测试

软件测试的核心原则:确保质量的六大基石

测吧(北京)科技有限公司

测试

ALive:淘宝双11直播,技术同学却可以“偷懒”?(二)_文化 & 方法_淘系技术_InfoQ精选文章