翻译 | Alex
技术审校 | 杨硕
本文来自OTTVerse,作者为Krishna Rao Vijayanagar。
CDN
Easy Tech
视频流架构
输入源视频并将其发送到转码器。
转码器调整视频大小,并将视频压缩成不同码率和分辨率的组合(被称为Profile,即配置文件)。
将被压缩的视频发送给封装器,并准备通过HLS和MPEG-DASH等ABR技术分发出去。
封装的视频(视频块和索引列表)被存储在视频流服务器或者源服务器上。最后,视频的URL通过CMS被发布出来,并使得应用程序可以访问。
当用户按下视频播放键时,源服务器响应来自播放器的请求,并将被请求的视频块分发出去。
视频缓冲:因为服务器无法快速响应用户。
首屏时间:因为服务器负载过高,无法分发视频。
视频质量较差:因为无法从服务器快速获取高质量(高码率)视频,播放器开始切换到低码率。ABR就是这样发挥作用的!
内容分发网络(CDN)
单一服务器要被迫服务100或者1000个客户端(或者视频播放器),无法满足如此多的需求。
处于某个地理位置的单一服务器无法将视频分片分发给距离它地理位置较远的客户端。
单点故障就会导致糟糕的用户体验。
但最重要的是,对同一视频分片的请求数量巨大。
然后, 为了服务不同的地理位置,我们可以在世界各地架设几个这样的缓存层,并向附近用户分发视频以及提供快速响应。
封装好的视频(也许是HLS或者DASH)被存储在源服务器上,而CDN知道通向源服务器的路径。因此 CDN 知道来自流媒体提供商的所有电影都存在于一堆服务器上及它们的 IP 地址。
然后视频播放器被编程为向CDN请求视频,而不是直接访问源服务器。所以视频播放器获取的是CDN的URL。
当第一个播放请求到达CDN,CDN缓存中可能没有内容,于是它便将请求转发给源服务器。当CDN收到来自源服务器的响应,它缓存住内容并且发送给播放器。
下一次另一个视频播放器(或者同一个播放器)请求同一视频分片时,CDN首先检查缓存看是否已缓存过被请求的内容。如果缓存过,CDN将缓存视频分发出去;如果没被缓存过,CDN向源服务器请求发送视频分片。
左图:无CDN 右图:有CDN (图片来自Wikipedia)
使用CDN的优势
CDN减少源服务器上的负载, CDN的快速响应能确保播放器在其带宽良好时,请求高码率的视频块能够及时接收到,避免缓冲区数据不足的情况。
减少源服务器基础设施的压力,因为大部分的负载被CDN承担。除此之外,还会降低源服务器的带宽消耗。
由于CDN接入点(Points of Presence,PoPs)分散各地, 所以更容易为广阔的地理区域或者不同地理位置提供服务。
安全:因为用户可以自行设置规则并拒绝来自客户端或者IP地址的请求,所以CDN可以有效保护源服务器不受DDoS攻击。因此,在遭受DDoS攻击时,CDN可以充当第一道防线。
总 结