专业书籍精读 · System Design Interview 卷一 · 第 14 章

设计 YouTube

System Design Interview Vol 1 · Ch 14 · Alex Xu · 2020

EN →

这一章讲什么?

你点开一个视频,一两秒就开始播,中途从 wifi 切到 4G 也不断。这一章要问的是:要把这件事做给几百万人用,背后得建些什么?答案有点出人意料——难的不是「播」,是「把片子准备好」和「把片子送到你身边」。

先说个怪事

你辛辛苦苦上传的那个文件,观众一秒都没看过。平台收到它之后会另做十几个版本:给手机的小份、给电视的大份、给信号差时的超小份,还有封面图和音轨。观众看的永远是这些「复制品」之一,原片只是躺在仓库里当母带。

旧世界为什么难

因为观众的设备和网络差得太远。同一部片,家里电视机能吃下的量是地铁上手机的十几倍。只发一个版本的话:发大的,一半人看不动;发小的,另一半嫌糊。只能事先把每种份量都做好,让播放器自己挑。可「做好」非常费机器——一部一小时的高清片,一台机器从头做到尾可能要跑几个小时。

核心机制:三个直觉

① 中央厨房出多种份量。片子进来先预处理,再照一张菜单做出一整套份量不同的成品。这道工序叫转码。

② 切成小段,一百个厨师同时做。视频有天然的切点——每隔几秒有一个「完整画面」,从那里能独立开始播。于是把一小时的片切成几百个几秒的小块,几百台机器同时做,做完按顺序拼回去。总时间不再取决于片子多长,而取决于最慢那一块。

③ 把火的片子提前送到你家小区。成品放在中心仓库,可用户离仓库可能隔着半个地球。所以平台把最火的那些提前铺到离用户几十公里的「便利店」(就是 CDN)。你点开时是从便利店取的,所以快。

该怎么选

取舍全在钱上。把每部片的每个版本都铺到全球每家便利店,账单立刻爆掉——这类平台最大的开销就是「把视频送出去」的流量费。所以真实做法是分层:热门的进便利店,冷门的从中心仓库现取,甚至连全套份量都不提前做,等真有人看了再做。

代价很诚实:你刚传完的视频,得等几分钟甚至更久才有高清版本——它正在那条流水线上排队。

一句话记住

视频平台真正难的两件事:把一个源片变成一整套不同份量的成品(靠切小块并行做),和把成品送到用户身边(靠只给热门片铺货)。播放本身反而是这行里最成熟的一段。

想进到具体机制、量级和示意图? → 切到精读版