首页 › AI System Design › 第14章:YouTube的设计

第14章:YouTube的设计

简介​

YouTube 是一个庞大的视频流媒体平台,支持视频上传、播放以及多种互动功能。本章将重点探讨如何设计一套可扩展的视频流媒体系统,其核心功能如下:​

•

快速上传视频​

•

流畅的视频播放​

•

支持调整视频质量​

•

基础设施成本低​

•

高可用性和高可靠性​

Key Statistics (2020)​

•

每月活跃用户达20亿​

•

每天播放50亿个视频​

•

37%的移动互联网流量来自YouTube​

•

支持80种语言​

•

2019年广告收入达151亿美元​

​

​

步骤1:明确问题与范围​

Core Functionalities​

上传视频​

观看视频​

Supported Platforms​

•

移动应用、网页浏览器和智能电视​

Assumptions​

•

日活跃用户数(DAU):500万​

•

平均视频大小:300 MB​

•

上传限制:每段视频最大1 GB​

•

每日存储需求:150 TB​

•

CDN成本:500万次 × 5个视频 × 0.3GB × 0.02美元 = 每日15万美元(以Amazon CloudFront为例)​

​

​

步骤2:概要设计​

Components​

​

飞书文档 - 图片

​

客户端:如智能手机、电脑和电视等设备。​

CDN(内容分发网络):存储并提供视频流服务。​

API 服务器:负责处理所有用户交互,但不包括视频流传输(例如上传、元数据更新等)。​

元数据数据库:存储视频元数据(例如标题、描述、大小等)。​

原始存储:用于存储上传视频的Blob存储。​

转码服务器:将视频转换为多种分辨率和格式。​

转码后的存储:用于存放转码后视频的Blob存储。​

​

​

Core Workflows​

视频上传流程​

•

并行处理:​

a.

将视频上传至原始存储。​

b.

在数据库中更新视频元数据。​

视频上传(步骤):​

​

​

•

[1] 视频被上传至 Blob 存储。​

•

[2] 转码服务器将视频转换为多种格式。​

•

[3] 一次转码完成后,接下来的两个步骤将并行执行。​

◦

[3a] 转码后的视频被发送至转码存储。​

◦

[3b] 转码完成事件被放入完成队列中。​

•

[3a.1] 视频被分发至CDN。​

•

[3b.1] 完成处理程序更新元数据并通知用户。​

1.1

元数据上传(步骤):​

​

​

•

客户端并行发送请求以更新视频元数据​

•

该请求包含视频元数据,包括文件名、大小、格式等。​

1.2

视频流媒体传输流程​

​

​

•

视频通过边缘服务器直接从CDN进行流式传输,以最大限度地降低延迟。​

•

一些流行的流媒体协议包括MPEG_DASH、Apple HLS和Adobe HDS。​

•

不同的流媒体协议支持不同的视频编码和播放器。​

​

​

步骤3:设计深度剖析​

Video Transcoding​

重要性​

原始视频占用大量存储空间。它能减少存储空间。​

确保跨设备和浏览器的兼容性。​

根据网络状况自适应视频质量。​

组件​

•

容器:封装视频、音频及元数据(例如MP4、AVI)。​

•

编解码器:用于压缩与解压缩的算法(例如H.264、VP9)。​

有向无环图(DAG)模型​

​

​

•

视频转码计算成本高且耗时。​

•

DAG模型定义了编码、生成缩略图和添加水印等任务。​

•

支持视频处理的高并行度。​

•

原始视频被拆分为视频、音频和元数据。​

​

​

​

​

Video Transcoding Architecture​

​

​

预处理程序:将视频拆分为更小的片段(按GOP对齐)。它承担四项职责。​

DAG调度器:将任务组织成顺序或并行的阶段。​

​

​

资源管理器:负责管理资源分配的效率。它包含3个队列和一个任务调度器。​

​

​

•

任务队列:一个包含待执行任务的优先级队列。​

•

工作线程队列:一个包含工作线程利用率信息的优先级队列。​

•

运行队列:包含当前正在执行的任务以及正在执行这些任务的工作线程。​

•

任务调度器:选择最优的任务/工作节点,并指示所选的工作节点执行该任务。​

任务工作者:执行转码及其他操作。​

​

​

•

不同的任务工作者可能执行不同的任务​

临时存储:用于存放重试的中间数据。​

◦

存储系统的选型取决于数据类型、数据规模、访问频率、数据生命周期等因素。​

输出:已转码的视频,可供分发。​

​

​

系统优化​

Speed Optimizations​

并行视频上传:将视频拆分为更小的分片,以实现更快、可续传的上传。​

​

​

分布式上传中心:将CDN用作靠近用户的上传枢纽。​

并行处理:通过消息队列解耦各模块,实现高并发。​

​

​

Safety Optimizations​

预签名URL:限制视频上传仅限授权用户。​

​

​

保护视频:​

◦

DRM系统(例如,Apple FairPlay、Google Widevine)。​

Cost-Saving Optimizations​

仅通过CDN分发热门视频;冷门视频则由高容量服务器提供。​

对访问频率极低的视频进行按需编码。​

根据视频热度实现区域化分发。​

构建定制化CDN,并与ISP合作以降低带宽成本。​

​

​

错误处理​

Recoverable Errors​

•

重试失败的上传、转码或资源分配任务。​

Non-Recoverable Errors​

•

停止格式错误的视频处理并返回错误码。​