视频CDN是一种旨在支持视频流传输的 CDN。将 CDN 用于流式视频有助于流到达世界各地的观众,最大限度地减少延迟和缓冲时间,并确保流的源或源服务器不会被请求淹没。
虽然大多数 CDN 能够将视频内容与 HTML、图像、JavaScript、CSS 样式表和其他 Web 内容一起缓存和交付,但视频 CDN 可以专门用于流式视频。例如,Netflix 建立了自己的分布式网络,称为 Open Connect,以更有效地交付视频内容。
什么是CDN?
内容交付网络(CDN) 是一组连接的服务器,它们通过 Internet缓存和交付内容。CDN 遍布世界各地,与原始服务器或单个数据中心相比,它们能够更有效地向更广泛的人群提供内容。每当用户从使用 CDN 的网站请求内容时,CDN 都会缓存内容;到“缓存”的意思是临时存储一个文件。
假设 Bob 在纽约纽约市的服务器上托管了一个网站 bobisgreat.example.com。当爱丽丝在纽约奥尔巴尼(约 250 公里外)访问该网站时,它会快速加载,因为网站内容只需传播 250 公里。但是,当 Carlos 尝试从他位于加利福尼亚州洛杉矶的家中(大约 4,800 公里外)加载 bobisgreat.example.com 时,他必须等待更长的时间才能加载该网站。
如果 Bob 使用 CDN 服务,CDN 可以将他的网站内容缓存在靠近 Alice 和 Carlos 的位置。假设 Bob 的 CDN 将他的网站缓存在奥尔巴尼和洛杉矶以及纽约市的数据中心。现在 Alice 和 Carlos 几乎不需要等待 bobisgreat.example.com 加载到他们的浏览器中。
为什么使用 CDN 流式传输视频?
最小化与观众的距离可减少延迟
上述相同的原理适用于流式视频。视频内容离观看者越近,加载和播放的速度就越快。CDN 的服务器可能比流的源点更靠近任何给定的查看器。
源站服务器没有不堪重负
使用 CDN 的多个服务器意味着流源的服务器不会因流请求而不堪重负。一组 200 台服务器可以为成千上万的观众处理流式视频,这比单个服务器要好得多。
流媒体内容不超过网络带宽
一个网络一次只能有一定数量的数据通过。这个最大量称为“带宽”。如果通过网络的数据量超过其带宽,则数据传输速度会大大减慢,就像将汽车限制在一条车道上会降低高速公路上的交通速度一样。如果流是从 CDN 的多个分布式服务器传送的,那么任何一个网络都不太可能以这种方式被流量淹没。
如何缓存流?
流式传输将视频文件从服务器连续传输到客户端。但是,流式视频不会作为一个连续文件进入用户的设备。相反,流媒体视频被分成更小的部分。每个片段都由用户的视频播放器加载并按正确的顺序放置。
每个单独的视频片段都可以由 CDN 缓存,就像图像、HTML 页面或 JavaScript 代码片段可以由 CDN 缓存一样。当用户请求流时,CDN 会在视频片段从流源到达时立即开始缓存它们。当下一个用户请求相同的流时,CDN 可以从缓存中传递这些片段,这要快得多。
CDN 如何缓存直播?
对于视频点播流,其中视频从存储交付,缓存视频相当简单:CDN 从源服务器请求存储的视频,源服务器交付它,然后 CDN 缓存视频。
在实时流媒体中,没有准备好的视频存储版本。然而,过程是相似的。唯一的区别是,CDN 会在实时创建视频片段时对其进行缓存,而不是缓存之前创建的视频。然后,流从缓存而不是直接从流的源提供给查看者。
尽管大多数观众必须额外等待几秒钟才能缓存每个片段,但如果有效完成,这实际上可以使流更接近“实时”,而不是直接从源服务器获取流。因为 CDN 比源服务器更接近观众,所以从缓存中提供流可以减少往返源服务器的往返时间 ( RTT )。此外,使用 CDN 降低了带宽问题会减慢观众直播流的可能性。