面试系列——直播模块设计总结和思考

Posted BridgeGeorge

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面试系列——直播模块设计总结和思考相关的知识,希望对你有一定的参考价值。

背景

支持IOT平台的直播功能,要求低功耗高性能高可用。

整体架构图

架构设计

整体接入

统一接入标准 函数实现
首帧为sps pps 数据,推送数据帧的方法 方便接入和后续扩展;

对外接口

外观模式 对外提供统一接口 业务层访问统一接口不需要跟具体模块交互

内部接口

策略模式 内部提供不同实现,发起时候 动态指定实现类,方便线上做AB test. 或者后期做动态切换。

可靠性保证

帧数据监控,帧率监控, 首帧数据重发 便于SDK 及时矫正

性能优化

内存优化

  • 系统层 内存Buffer 复用,避免内存频繁分配;
  • 应用层 采用SparseArray 保存 映射
  • 应用层 SDK 延迟初始化,懒加载,
  • H264 byte buffer 采用对象池,高效对象复用,内存copy函数

CPU优化

  • 系统层 CPU 动态调频,功能开启时 核心数跑满 结束时,结束功能时关闭调频,设置最大调频时长,防止异常情况下系统处于性能模式 降低发热等降低使用寿命;
  • 应用层 线下尝试不同的码率和分辨率测试组 和不同的丢帧策略,找到效果和 性能的平衡点,线上支持动态配置和切换,支持通过指令动态切换;最终将CPU控制从30%降低到15%左右, 优化幅度达到50% .

项目总结

  • 评估排期 评估 测试用例 及时沟通 暴露风险等 保证项目交付
  • 日会拉齐各方进度和问题,保证问题delay 体现责任感 和 沟通能力

以上是关于面试系列——直播模块设计总结和思考的主要内容,如果未能解决你的问题,请参考以下文章

面试系列——录制模块架构设计和思考

面试系列——录制模块架构设计和思考

面试系列——播报SDK开发和总结概述

面试系列——播报SDK开发和总结概述

直播 | 滴滴开源监控夜莺的架构设计思考

Java面试——Spring系列总结