Lesson 0013 · 系统设计 · Phase 4 实战 · 综合案例

大案例 III:视频平台(YouTube 类)

⏱ 预计 40 分钟 🎯 存储/带宽密集型系统的设计范式 📖 前置:L2 · L3 · L7
与你的 Mission 的关系

短链(L8)练的是「读多写少」,秒杀(L12)练的是「瞬时洪峰」,视频平台练第三种:存储与带宽密集——它教会你「这类系统的架构重心在离线管线,而不在在线接口」。同时它是 Netflix/字节/快手系公司的核心业务模型。转码管线的资料以 Netflix 的工程实践与 HLS 标准[1][2]为主。

§1 · Step 1澄清需求

类别关键约束
功能(MVP)① 上传视频;② 观看(流畅、可调清晰度);③ 点赞/评论/分享。不做:直播、在线剪辑、推荐算法细节(可提扩展)
非功能读写比夸张(观看:上传 ≈ 200:1);起播延迟 <2s、卡顿率是核心体验指标;上传可以慢,观看不能卡
规模假设500 万 DAU;每天新上传 5 万条;平均单条 10 分钟

§2 · Step 2估算:数字暴露架构重心

指标计算架构暗示
原始存储5 万条/天 × 100MB(10分钟 1080p 量级) ≈ 5 TB/天还没转码就 5TB/天
转码放大每种视频转 4–6 档清晰度(240p–4K)→ 总量 ×4 ≈ 20 TB/天,一年 ~7 PB冷热分层存储:热片 SSD/NVMe,长尾机械盘/归档(L2 的价格-速度谱系)
观看带宽500 万 DAU × 30 分钟 × 3Mbps ≈ 6.75 Tb/s 出站自建出口毫无可能 → CDN 是可行性前提,不是优化(L3)
写 QPS5 万 ÷ 86400 ≈ 0.6/s 上传,观看元数据读 ~3.5 万/s在线接口的压力其实不大——压力全在离线管线
本案例的元认知

三道案例课的三种重心:短链 = 在线读路径;秒杀 = 在线写洪峰;视频 = 离线数据处理管线。面试时先判断题目属于哪类,整个设计的架子就立住了。

§3 · Step 3高层设计:两条链路

上传链路(异步管线,用户不用等)

上传 → 对象存储(原始片)→ 发「新视频」事件(MQ, L7)
     → 立刻返回「处理中」
     → 转码集群消费:拆片 → 每档清晰度编码 → 切 HLS 分片
     → 产物写回对象存储 + 元数据入库 → 视频可看

观看链路(在线读路径)

播放 → 元数据服务(标题/地址/弹幕:DB + 缓存)
     → CDN 边缘取分片(热点片预推送,Push 模式,L3)
     → 播放器自适应码率,按需 Range 拉取
点赞/评论 → 计数走异步聚合(近似值即可,L9 最终一致)

§4 · Step 4深入与权衡

深挖点讨论
爆款预判 新视频上传即知热度吗?不知道 → 全量推 CDN 太贵。解法:首小时边缘按需回源(Pull)+ 监测到热度斜率后升级为 Push 预推——两段式,权衡的是带宽成本 vs 首批用户的起播延迟
计数问题 热门视频的点赞数每秒上万次更新 → 同步写 DB 是灾难。异步聚合 + 近似计数(Redis 原子累加,定时刷盘)。1,234,567 还是 1,234,589 没人知道也没人在乎——精确度按需购买(L9)
转码失败 长任务必失败(节点抢占/坏盘)。管线幂等(同一视频重复处理结果一致,L7)+ 失败重试 + 死信人工介入;用户侧显示「处理中,最长 X 分钟」
多 CDN 策略 单一 CDN = 单点(L10 熔断思想的上游版)。业界常态是 2–3 家 CDN 按成本/质量动态调度——供应商冗余也是冗余

§5 · 随堂检测

§6 · 检索练习(本课最重要 25 分钟)

盖住全部内容,白板推演:设计「短视频 App(抖音类)」:300 万 DAU、每天 20 万条上传、人均刷 40 条。注意:短视频会引入你的哪些新权衡(时长短 → 分片策略?刷新 feed → 上滑预加载?)。

对照清单(自查 7 项)

① 读写比与存储/带宽两个量级估算 ② CDN 定性为可行性前提 ③ 上传-转码-观看两条链路分开画 ④ MQ 解耦转码 + lag 扩容 ⑤ HLS 多码率 + 自适应 ⑥ 冷热分层存储 ⑦ 近似计数 + 降级预案。短视频额外亮点:预加载下一屏、爆款快速 Push。

§7 · 本周行动

行动任务(约 20 分钟)

往 YouTube/B 站上传一个几分钟的视频,全程截图处理进度:几档清晰度?哪个先可用(为什么 360p 总是先出来——转码顺序的商业考量)?HDR/高帧率为什么最后?——把观察对应回本课管线图。

§8 · 延伸资源

💬 你的上传侦探笔记、或短视频版推演,都可以贴给我点评。