SWE · System Design

Meta Netflix视频播放:转码、CDN与播放会话

设计点播视频服务,拆分媒体制作、播放授权、清晰度切换和观看进度。

题目重点:设计点播视频服务,拆分媒体制作、播放授权、清晰度切换和观看进度。

题意与假设

这道练习题保留了面经中值得训练的核心约束,并将需要澄清的条件单独列出。现场拿到变体时,先和面试官确认这些条件。

  • 训练点播目录、播放、跨设备进度,不含直播。版权地区、订阅状态、DRM与下载离线是否必须由面试给定。
  • 媒体数据面与用户元数据控制面分离;不给没有依据的用户数量,按并发播放数与码率估带宽。

解题路线

  1. 入库pipeline校验源视频、转多码率/分辨率分片、生成manifest与字幕,完整variant可用后才发布assetVersion。对象存储是源,CDN分发immutable分片,manifest引用版本防止混片。
  2. playSession API校验user订阅/地区/并发策略,返回短期播放凭证、manifest与license流程。CDN签名或边缘鉴权控制内容访问,鉴权故障按政策失败或受控短暂续用,不能无条件公开媒体。
  3. 播放器依据带宽和buffer自适应选码率,seek按segment索引请求;prefetch受限减少浪费。QoE分开startup latency、rebuffer ratio、bitrate、error rate,缓存命中不等同流畅。
  4. 热门内容预热边缘,冷门回源请求合并与区域shield降低源压力。多CDN切换需地址/授权与QoE监测支持,不能只增加副本就解决最后一公里拥塞。
  5. 进度事件带sessionId、seq、position、updatedAt。多设备“最新操作位置”与“最远看到位置”是不同字段,不能max(position)实现用户回看。暂停/结束/离线同步的冲突政策必须明确。
  6. 播放日志异步上报用于质量分析,计费/授权账本另存。断线客户端可缓冲已经授权的分片,但不能由此假设离线下载许可证无期限有效。

手动走一遍

10万同时播放、平均4Mbps,数据出站约400Gbps,不是播放API每秒10万×4MB。视频切换版本需manifest和segments一致;用户从40分钟回看到10分钟,resume若只取最大位置会错误跳回40分钟。

规模与取舍

媒体容量是每片时长×全部编码码率之和;带宽约concurrentStreams×averageBitrate,CDN回源约未命中字节加填充流量。元数据读写按播放创建/进度频率另算,分片时长影响请求频率与首屏/切码率粒度。

易错点与追问

容易失分的边界

  • 让应用服务器代理全部视频字节,会把控制面和大带宽数据面耦合。
  • 使用用户时间戳决定全球最新会话,设备时钟偏差可能覆盖新状态。

继续深挖

  • 热门新片同时首播如何预热又避免全量浪费?
  • 视频版本撤回、许可证撤销与已缓存分片之间,产品允许什么可见延迟?
✓已复制微信号!