翻译|Alex技术评论|硕扬本文来自OTTVerse,由KrishnaRaoVijayanagar撰写。
CDNEasyTech#010#
CDN(ContentDeliveryNetworks,内容分发网络)是分布在世界各地的服务器,它们是视频直播和点播中至关重要的基础设施。CDN位于视频播放器和源服务器之间,负责跨地理区域分发视频内容,并有效保障客户端流畅的观看体验。
在本文中,我们将了解CDN如何工作,如果不使用CDN会发生什么,以及什么是缓存命中和缓存未命中。我们开始吧!
对于大多数实时视频和点播架构,以下操作是常见步骤:
输入源视频并发送给转码器。转码器会调整视频的大小,并将其压缩成不同比特率和分辨率的组合(称为配置文件)。将压缩后的视频发送到打包器,准备通过HLS、MPEG-DASH等ABR技术进行分发。封装的视频(视频块和索引列表)存储在视频流服务器或源服务器上。最后,视频的URL通过CMS发布,并由应用程序访问。当用户按下视频播放键时,源服务器响应来自播放器的请求并分发所请求的视频块。
我们刚刚描述了一个直播(或点播)视频流服务架构,一开始可能会非常有用,但是当你添加更多用户、订阅者、内容或者一个视频突然火了以后,它很快就崩溃了。.
让我们花一分钟来讨论一下视频的突然流行。
假设有人录了一首歌,上传到你的UGC平台,突然就红了。全世界都想听这首歌,源服务器上播放器的请求急剧增加。你认为接下来会发生什么?
首先,你的源服务器会受到大量请求的轰炸:3分钟内同一视频的视频切片,每秒发出1000个请求。就像踩踏事件一样!
在这种情况下,源服务器该如何应对?
源服务器将努力满足所有请求。即使服务器再强大,也无法承受如此庞大的请求数量。
一些播放器可以请求第一个视频切片,而其他播放器可以请求最后一个视频切片(具有不同的分辨率和码率)。由于进程或网络I/O的限制,源服务器将很快无法满足许多请求。
最后,您的最终用户将会遇到以下问题:
视频缓冲:因为服务器不能快速响应用户。首屏时间:无法分发视频,因为服务器超载。视频质量较差:无法快速从服务器获得高质量(高比特率)的视频,因此播放器开始切换到低比特率。ABR就是这么运作的!所有这些问题都会导致糟糕的体验,这不是提供视频流服务的正确方式。但是我们所描述的是非常普遍的,在那些流行的视频流服务中几乎每天都会发生。
那么,解决办法是什么呢?
让我们试着解决这个问题。以下是我们迄今观察到的问题的症结所在:
单个服务器被迫服务100或1000个客户端(或视频播放器),无法满足这么多需求。某个地理位置的单个服务器无法向远离它的客户端分发视频剪辑。单点故障会导致糟糕的用户体验。但最重要的是,对同一视频剪辑的请求数量是巨大的。如果我们仔细研究上述原因,某种模型似乎正在出现,引导我们找到问题的答案。
如果所有客户端都请求相同的视频剪辑,为什么不像在计算机上缓存那样缓存视频剪辑呢?为什么每次都要问硬盘?
所以,我们在源服务器前面加一个缓存层,可以缓存频繁请求的视频片段,分发出去,不用每次都访问源服务器。
然后,为了服务于不同的地理位置,我们可以在世界各地建立几个这样的缓存层,将视频分发给附近的用户,并提供快速响应。
以上操作是设计一个非常简单的CDN的开始。
好了,现在让我们更深入的了解一下CDN的工作原理:
封装的视频(可能是HLS或DASH)存储在源服务器上,CDN知道到源服务器的路径。所以CDN知道所有流媒体提供商的电影都存在于一堆服务器和它们的IP地址上。然后,视频播放器被编程为从CDN请求视频,而不是直接访问源服务器。所以视频播放器得到了CDN的URL。当第一个播放请求到达CDN时,CDN缓存中可能没有内容,因此它将请求转发到源服务器。当CDN收到来自源服务器的响应时,它会缓存内容并发送给播放器。下一次另一个视频播放器(或同一个播放器)请求相同的视频剪辑时,CDN首先检查缓存,以查看请求的内容是否已被缓存。如果缓存了,CDN会分发缓存的视频;如果没有缓存,CDN会请求源服务器发送视频剪辑。
左:没有CDN右:有CDN(图片来自维基百科)
关闭
于CDN,你还需要知道一些术语:缓存未命中(CacheMiss):当客户端向CDN请求内容,而CDN刚好没有缓存该内容时,我们就称之为缓存未命中。发生缓存未命中时,CDN将向源服务器请求未命中内容。源服务器响应后,CDN将缓存内容并将其分发给客户端。
缓存命中(CacheHit):当客户端向CDN请求内容时,CDN刚好缓存了此内容,这时我们就称之为缓存命中。在这种情况下,CDN将向客户端设备分发缓存内容。
TTL(TimetoLive):CDN不会无限期地缓存视频分片或者其他媒体内容。它使用一个名为TTL(TimetoLive)的变量来丢弃和刷新那些不被频繁请求的视频内容。这种缓存刷新可以为新内容腾出空间并智能管理磁盘空间。
在视频流服务(直播或者点播)中使用CDN有很多好处,让我们来看下:
CDN减少源服务器上的负载,CDN的快速响应能确保播放器在其带宽良好时,请求高码率的视频块能够及时接收到,避免缓冲区数据不足的情况。减少源服务器基础设施的压力,因为大部分的负载被CDN承担。除此之外,还会降低源服务器的带宽消耗。由于CDN接入点(PointsofPresence,PoPs)分散各地,所以更容易为广阔的地理区域或者不同地理位置提供服务。安全:因为用户可以自行设置规则并拒绝来自客户端或者IP地址的请求,所以CDN可以有效保护源服务器不受DDoS攻击。因此,在遭受DDoS攻击时,CDN可以充当第一道防线。我希望本篇文章能帮助你理解CDN、它的工作原理以及使用CDN的优势。包括Akamai、Fastly、Cloudflare、KeyCDN、LimeLight和Medianova等在内的CDN厂商在向用户交付内容及改善视频观看体验方面都做得非常出色(不同的用例、架构和预算)。
在未来的系列文章中,我们将学习CDN技术中的Multi-CDN、边缘缓存(EdgeCaches)和边缘计算(EdgeComputing)等概念。
致谢
本文已获得作者KrishnaRaoVijayanagar授权翻译和发布,特此感谢。
原文链接:
https://ottverse.com/what-is-a-cdn-content-delivery-network-live-vod/
延伸阅读:
为什么直播时要用CDN?
为什么视频压缩如此重要
什么是闭合GOP和开放GOP?
理解ABR及其工作原理
讲师招募
LiveVideoStackCon2022音视频技术大会上海站,正在面向社会公开招募讲师,无论你所处的公司大小,title高低,老鸟还是菜鸟,只要你的内容对技术人有帮助,其他都是次要的。欢迎通过speaker@livevideostack.com提交个人资料及议题描述,我们将会在24小时内给予反馈。
上一篇:滴水观音的汁液有毒吗?