本文来自OTTVerse,作者为Krishna Rao Vijayanagar。 CDN(Content Delivery Networks,内容分发网络)是分布在世界各地的服务器,它们是视频直播和点播中至关重要的基础设施。CDN位于视频播放器和源服务器之间,负责跨地理区域分发视频内容,并有效保障客户端流畅的观看体验。在本文中,我们将学习CDN是如何工作的,如果不使用CDN会发生什么,并了解什么是Cache-Hit和Cache-Miss。让我们开始吧!对于大部分视频直播和点播架构来说,下列操作是常见的步骤:输入源视频并将其发送到转码器。 转码器调整视频大小,并将视频压缩成不同码率和分辨率的组合(被称为Profile,即配置文件)。 将被压缩的视频发送给封装器,并准备通过HLS和MPEG-DASH等ABR技术分发出去。 封装的视频(视频块和索引列表)被存储在视频流服务器或者源服务器上。最后,视频的URL通过CMS被发布出来,并使得应用程序可以访问。 当用户按下视频播放键时,源服务器响应来自播放器的请求,并将被请求的视频块分发出去。 我们刚刚描述了一个直播(或点播)的视频流服务架构,这个架构在一开始可能很好用,但是当你添加更多用户、订阅者、内容或者一个视频突然火了以后,它很快就崩溃了。假设有人录制了一首歌并上传到你的UGC平台,突然一下子火了。全世界都想听这首歌,源服务器上来自播放器的请求急剧增长。你认为接下来会发生什么?首先,你的源服务器将遭到大量请求的“轰炸”:来自时长3分钟的、同一视频中的视频切片,每秒发出1000次请求。就像发生踩踏事件一样!源服务器将艰难地服务所有请求。即使服务器很强大,它也无法承受如此巨量的请求。有些播放器也许会请求视频的第一个分片,其他播放器也许会请求最后一个视频分片(具有不同的分辨率和码率)。由于进程或网络 I/O 限制,源服务器很快便无法为众多请求提供服务。以上这些问题都会导致糟糕的体验,这可不是正确提供视频流服务的方式。但我们所描述的情况很常见,这在那些广受大众喜爱的视频流服务中几乎每天都会发生。让我们尝试来解决问题,以下是到目前为止我们所观察到的问题症结: 如果我们认真研究上述原因,某种模式似乎正在浮出水面,引领着我们走向问题答案。如果所有用户端都在请求同一视频分片,为什么不像电脑上的缓存那样缓存视频分片?为什么每次都要向硬盘请求?所以,让我们在源服务器的前面增加一个缓存层,这个缓存层可以缓存频繁被请求的视频分片并将它们分发出去,而不必每次都要访问源服务器。然后, 为了服务不同的地理位置,我们可以在世界各地架设几个这样的缓存层,并向附近用户分发视频以及提供快速响应。 封装好的视频(也许是HLS或者DASH)被存储在源服务器上,而CDN知道通向源服务器的路径。因此 CDN 知道来自流媒体提供商的所有电影都存在于一堆服务器上及它们的 IP 地址。 然后视频播放器被编程为向CDN请求视频,而不是直接访问源服务器。所以视频播放器获取的是CDN的URL。 当第一个播放请求到达CDN,CDN缓存中可能没有内容,于是它便将请求转发给源服务器。当CDN收到来自源服务器的响应,它缓存住内容并且发送给播放器。 下一次另一个视频播放器(或者同一个播放器)请求同一视频分片时,CDN首先检查缓存看是否已缓存过被请求的内容。如果缓存过,CDN将缓存视频分发出去;如果没被缓存过,CDN向源服务器请求发送视频分片。
左图:无CDN 右图:有CDN (图片来自Wikipedia)
缓存未命中(Cache Miss):当客户端向CDN请求内容,而CDN刚好没有缓存该内容时,我们就称之为缓存未命中。发生缓存未命中时,CDN将向源服务器请求未命中内容。源服务器响应后,CDN将缓存内容并将其分发给客户端。缓存命中(Cache Hit):当客户端向CDN请求内容时,CDN刚好缓存了此内容,这时我们就称之为缓存命中。在这种情况下,CDN将向客户端设备分发缓存内容。TTL( Time to Live):CDN不会无限期地缓存视频分片或者其他媒体内容。它使用一个名为TTL(Time to Live)的变量来丢弃和刷新那些不被频繁请求的视频内容。这种缓存刷新可以为新内容腾出空间并智能管理磁盘空间。在视频流服务(直播或者点播)中使用CDN有很多好处,让我们来看下:CDN减少源服务器上的负载, CDN的快速响应能确保播放器在其带宽良好时,请求高码率的视频块能够及时接收到,避免缓冲区数据不足的情况。 减少源服务器基础设施的压力,因为大部分的负载被CDN承担。除此之外,还会降低源服务器的带宽消耗。 由于CDN接入点(Points of Presence,PoPs)分散各地, 所以更容易为广阔的地理区域或者不同地理位置提供服务。 安全:因为用户可以自行设置规则并拒绝来自客户端或者IP地址的请求,所以CDN可以有效保护源服务器不受DDoS攻击。因此,在遭受DDoS攻击时,CDN可以充当第一道防线。 我希望本篇文章能帮助你理解CDN、它的工作原理以及使用CDN的优势。包括Akamai、Fastly、Cloudflare、KeyCDN、LimeLight和Medianova等在内的CDN厂商在向用户交付内容及改善视频观看体验方面都做得非常出色(不同的用例、架构和预算)。在未来的系列文章中,我们将学习CDN技术中的Multi-CDN、边缘缓存(Edge Caches)和边缘计算(Edge Computing)等概念。 本文已获得作者Krishna Rao Vijayanagar授权翻译和发布,特此感谢。https:///what-is-a-cdn-content-delivery-network-live-vod/
|