ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

system-design-notes 第14章:设计YouTube视频平台完整指南

system-design-notes 第14章:设计YouTube视频平台完整指南 system-design-notes 第14章设计YouTube视频平台完整指南【免费下载链接】system-design-notesNotes of the book System Desgin Interview - An Insiders Guide项目地址: https://gitcode.com/GitHub_Trending/sy/system-design-notessystem-design-notes《System Design Interview》读书笔记第14章带你从零开始设计 YouTube 视频平台涵盖视频上传、转码架构、CDN 分发与流媒体播放四大核心模块帮助新手快速建立大规模视频系统的完整设计思路。一、YouTube 平台规模有多大 先感受一下真实数据2020 年统计指标数值月活跃用户20 亿每日播放视频数50 亿移动网络流量占比37%支持语言80 种面试中我们通常做简化假设日活用户DAU500 万平均视频大小300 MB单视频上限 1 GB每日存储需求约150 TBCDN 成本估算500 万 × 5 次/天 × 0.3 GB × $0.02 ≈$150,000/天 这一章的目标既能快速上传视频又能流畅播放还支持切换清晰度同时控制成本、保证高可用。二、YouTube 视频平台高层架构设计高层设计的关键是分清两条通路视频流→ 走 CDN就近的边缘服务器延迟最低其他一切请求上传、评论、元数据更新→ 走 API 服务器![YouTube视频平台高层架构客户端通过CDN拉取视频流其余请求走API服务器](https://raw.gitcode.com/GitHub_Trending/sy/system-design-notes/raw/9d8388721e7231442763ad37398b8d82224aa68f/14. Youtube/images/high-level-design.png?utm_sourcegitcode_repo_files)整个平台由 7 大组件构成Client手机、电脑、智能电视等终端CDN存储并分发视频流API Servers处理上传、元数据更新等交互Metadata Database存储视频标题、描述、大小等元数据Original Storage存放上传的原始视频Blob 存储Transcoding Servers将视频转码为多种分辨率和格式Transcoded Storage存放转码后的视频再分发到 CDN三、视频上传完整流程拆解上传请求到达 API 服务器后系统会并行做两件事① 把视频文件传到原始存储② 把元数据写进数据库。视频侧的完整链路如下![YouTube视频上传流程原始存储、转码服务器、完成队列与CDN分发的全链路](https://raw.gitcode.com/GitHub_Trending/sy/system-design-notes/raw/9d8388721e7231442763ad37398b8d82224aa68f/14. Youtube/images/video-uploading-flow.png?utm_sourcegitcode_repo_files)各步骤说明步骤动作1用户上传视频到原始存储Original Storage2转码服务器拉取原始视频3a转码完成后结果写入转码存储3a.1视频分发到 CDN用户即可观看3b转码完成事件进入完成队列Completion Queue3b.1完成处理器更新元数据库、刷新缓存并通知用户 亮点上传与转码解耦、元数据与文件流并行用户无需干等转码完成视频就绪后会被自动通知。四、视频转码深度解析DAG 模型为什么要转码省存储原始视频体积巨大转码可显著压缩保兼容不同设备、浏览器支持的编码格式不同自适应网络弱网自动降清晰度体验更流畅涉及两个核心概念容器Container封装音视频与元数据如 MP4、AVI编解码器Codec压缩/解压算法如 H.264、VP9用 DAG有向无环图编排转码任务转码非常耗时且耗算力因此把一个视频的转码建模为一组可并行的任务图原始视频被拆分为Video / Audio / Metadata三路再分别派生出视频编码、音频编码、缩略图生成、水印等任务最后统一装配Assemble。![YouTube视频转码DAG模型原始视频拆分为视频音频元数据后并行执行转码任务](https://raw.gitcode.com/GitHub_Trending/sy/system-design-notes/raw/9d8388721e7231442763ad37398b8d82224aa68f/14. Youtube/images/dag-video-transcoding.png?utm_sourcegitcode_repo_files)转码系统六大组件![视频转码架构预处理器、DAG调度器、资源管理器与任务Worker的流水线](https://raw.gitcode.com/GitHub_Trending/sy/system-design-notes/raw/9d8388721e7231442763ad37398b8d82224aa68f/14. Youtube/images/video-transcoding-architecture.png?utm_sourcegitcode_repo_files)1. Preprocessor预处理器把视频按 GOP图像组边界切分为小块按配置文件生成 DAG并把中间数据存入临时存储以便失败重试。![视频转码预处理器DAG配置按GOP对齐切分视频流并生成DAG](https://raw.gitcode.com/GitHub_Trending/sy/system-design-notes/raw/9d8388721e7231442763ad37398b8d82224aa68f/14. Youtube/images/dag-config.png?utm_sourcegitcode_repo_files)2. DAG Scheduler调度器把 DAG 拆成多个 Stage 放入任务队列例如 Stage 1 拆出视频/音频/元数据Stage 2 把视频进一步拆为编码与缩略图两个任务。![DAG调度器把DAG拆分为顺序与并行阶段的任务队列](https://raw.gitcode.com/GitHub_Trending/sy/system-design-notes/raw/9d8388721e7231442763ad37398b8d82224aa68f/14. Youtube/images/dag-scheduler.png?utm_sourcegitcode_repo_files)3. Resource Manager资源管理器核心是三个队列 一个调度器——任务队列优先级、Worker 队列利用率、运行中队列Task Scheduler 负责挑选最优的任务 × Worker组合下发执行。![资源管理器任务队列、Worker队列、运行队列与任务调度器](https://raw.gitcode.com/GitHub_Trending/sy/system-design-notes/raw/9d8388721e7231442763ad37398b8d82224aa68f/14. Youtube/images/resource-manager.png?utm_sourcegitcode_repo_files)4. Task Workers真正执行转码、缩略图、水印等操作的工人节点不同 Worker 可跑不同任务。5. Temporary Storage缓存中间数据编码失败时可直接重试不必从头再来。6. Output转码完成的视频等待分发到 CDN。五、系统优化速度、安全与成本三板斧 ⚡1. 提速优化并行分片上传把大视频切成小分块并行上传失败可从断点续传分布式上传中心借助全球 CDN 节点就近接收上传降低延迟消息队列解耦各模块之间用消息队列通信天然支持高并行、削峰填谷![消息队列解耦模块用Kafka等队列提升转码流水线并行度](https://raw.gitcode.com/GitHub_Trending/sy/system-design-notes/raw/9d8388721e7231442763ad37398b8d82224aa68f/14. Youtube/images/message-queue1.png?utm_sourcegitcode_repo_files)2. 安全优化预签名 URLPre-Signed URLs由服务端签发带有效期的临时上传凭证只允许授权用户写入存储防止伪造上传。![预签名URL机制服务端签发带有效期的临时上传凭证](https://raw.gitcode.com/GitHub_Trending/sy/system-design-notes/raw/9d8388721e7231442763ad37398b8d82224aa68f/14. Youtube/images/pres-signed-urls.png?utm_sourcegitcode_repo_files)内容保护DRM 数字版权管理如 Apple FairPlay、Google Widevine、AES 加密、视频水印3. 省钱优化重点考点 热门视频走 CDN冷门视频从大容量服务器直出冷门视频按需转码首次访问才转避免白烧算力按地区热度做区域化分发自建 CDN 并与 ISP 合作压低带宽成本六、错误处理策略 ️类型处理方式典型场景可恢复错误自动重试上传失败、转码失败、资源分配失败不可恢复错误终止处理并返回错误码视频格式非法、文件损坏可恢复错误依赖临时存储中的中间数据实现快速重试这是转码架构里非常实用的设计。七、本章小结与延伸阅读本章的核心链路可以浓缩为一句话上传分片 → 原始存储 → DAG 转码流水线 → 转码存储 → CDN 分发 → 多清晰度流媒体播放掌握这套模式后你就能在面试中从容应对任何视频平台类系统设计题。想深入研究每个组件的细节推荐阅读原章节笔记 本章完整笔记14. Youtube/Readme.md 全书总览与目录Readme.md配套插图上传流程图、转码 DAG 图等均可在 14. Youtube/images/ 目录下查看。【免费下载链接】system-design-notesNotes of the book System Desgin Interview - An Insiders Guide项目地址: https://gitcode.com/GitHub_Trending/sy/system-design-notes创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表