Home 技术文章 优化实时流媒体的CDN
Applications

About The Author

Outline

Flash人群和您的直播流媒体

随着流媒体服务争夺有限数量的观众和不断缩小的关注范围,现场活动已成为出版商内容策略中的一个重要因素,这些活动是受众参与度的可靠驱动因素。 然而,尽管 实时流媒体 可以可靠地交付受众,但可靠地大规模流媒体直播事件也会面临一系列挑战。 内容交付网络(CDN)可以帮助提供按需可扩展性;但是,即使CDN也必须针对实时流媒体进行优化。

也许最明显的直播流媒体挑战是”突发人群”—这种现象发生在许多观众同时进入一个直播流时—渴望赶上启动或加班的动作。 在NBA总决赛第6场比赛中,我们通过流式传输超过100,000场体育赛事观察到了典型的观众行为,观众人数迅速增长,从季报时几乎没有任何观众,到第三季度达到了204万观众的高峰。 第一个小时的收视率从不到10,000节上升到超过100万节,半场后又增加了150万节,有时每分钟增加了10万多名新观众。 这种快速扩展会给任何CDN带来压力。 但交付直播视频更具挑战性。 任何中断都可能导致播放中断。

正如我们网络上最近一次现场活动的示例所示,”闪存拥挤”现象使通过CDN提供视频比提供常规内容字节更困难。

在这篇文章中,我们将了解突发流量和其他挑战,然后探讨Verizon Media如何利用其在CDN领域多年的经验来解决客户的一些常见难题, 让它成为提供高质量现场活动的正确选择—无论是体育,音乐会,政治…,还是首次登上火星。

为什么实时串流缓存不同

通过互联网交付直播活动涉及使用一种或多种ABR (自适应比特率)流媒体格式,例如MPEG-DASH,Apple HLS,Adobe HDS和Microsoft Smooth Streaming。 它通常依赖标准HTTP Web服务器作为源服务器,并依赖CDN大规模分发内容。

Verizon Media (现称Edgio)的大型 全球CDN 具有许多POP和超过250 Tbps的容量,因此我们可以轻松扩展以处理大型流量高峰和突发流量。 但是,容量和规模只是等式的一部分。 在直播流媒体中尤为重要的是,CDN在为同时访问的大量观众扩展时,与源服务器和客户端之间的交互效果如何。

实时流量配置文件是独一无二的,与其他任何内容(甚至与VOD)截然不同,因为在直播活动期间,编码器不断向源服务器发布新的媒体段(通常持续时间为2–10秒), CDN始终获取新发布的内容并通过网络传播。 此过程所需的时间不为零;因此,某些延迟无法避免。 但是,CDN在执行高速缓存填充过程期间(更重要的是,在启动高速缓存填充过程之前)填充高速缓存和处理客户端请求时极其高效且智能,这一点至关重要。 理想情况下,CDN应能够将源服务器上的负载保持在绝对最低水平,同时避免给整个媒体管道增加过多的额外延迟。 这可确保客户端最终用户享受流畅和连续的播放。

我们的CDN具有广泛的功能,使我们能够在缓存填充过程完成之前,期间和之后最大限度地减少源站卸载并改善最终用户体验。

实时串流高速缓存优化

如下图所示,我们的媒体平台采用了一系列可调优化,以实现流媒体直播的快速,可靠交付。 在以下章节中,我们将解释它们的重要性及其工作原理。

原始防护罩

首先,Origin Shield是CDN边缘服务器和源服务器之间的一个额外缓存层。 我们在其中一个PoP中创建了一个虚拟源站,该源站反过来管理来自所有其他PoP位置的所有请求。 当CDN边缘服务器收到用户的请求,但无法满足缓存的请求时,边缘服务器将从防护弹出中提取对象,而不是直接从客户源站提取对象。 作为全球CDN,我们为客户提供选择,即为每个地区(美国,欧盟,亚洲等)分配单个POP作为盾牌,或分配一个SHIELD POP。

Origin Shield可帮助我们在出现大量流量高峰和突发流量时保护源服务器。 然而,它可能不足以处理直播流媒体的独特流量配置文件。

部分缓存共享

在直播流媒体中,一个典型的模式是多个客户端请求尚未在缓存中的流的某个段。 CDN可以通过多种方式来处理这些请求。 首先,它可以向源站同时发送多个缓存填充请求(每个新客户端的请求一个),这有助于最大限度地减少延迟并优化最终用户体验。 第二种方法是发送单个缓存填充请求,该请求为第一个客户端提供服务,而不会延迟,但让其他客户端等待完整文件加载到缓存中(此方法旨在最大程度地减少源服务器上的负载)。

不幸的是,这两种选择都不是一个特别好的解决办法。

相反,我们的方法在这两个选项之间实现了平衡,允许在多个客户端之间共享一个已在运行的缓存填充,从而请求已在缓存中部分存在的相同内容。 “部分缓存共享”允许其他客户端利用预先存在的缓存填充,因此视频内容可以在加载到缓存时同时传送到多个客户端。 结果:更快的启动时间,更低的延迟和更低的源站负载。

高速缓存填充等待时间

从客户端请求视频文件到视频文件开始加载到CDN弹出窗口之间有一段时间间隔。 这一时间点非常小(可能仅在几毫秒内发生),但直播闪存群使其成为一个非常重大的挑战,因为它可能由数百个甚至数千个请求组成。 在这种情况下,上述部分缓存共享功能尚未启动。 通常,这被认为是一个角落的情况下,但它更有可能发生在流媒体直播,由于突发的人群。 在这一关键时刻,CDN可能会通过一次传递太多请求而使源站不堪重负。

同一文件的多个请求被合并以防止出现此问题,并且只向源服务器发出一个请求。 缓存填充等待时间是一个虚拟等候室,可改善源站卸载并应对闪存拥挤。 当单个请求的HTTP响应标头到达,并且一个请求开始从源服务器接收文件时,缓存可以与所有等待的池用户共享。 实际的”等待时间”(毫秒)是高度可配置的,可以根据特定的源站功能和客户需求进行微调。

Spawn子请求

如上所述,当多个用户请求相同的未缓存内容时,第一个客户端可能在速度较慢的设备上,如3G连接上的智能手机。 这会伤害所有其他客户端,因为缓存通常会以客户端可以吸收内容的速率进行填充。 为了避免这种情况,我们可以将缓存填充与可能缓慢/失败的第一个客户端分离,并更快地从源站填充(以我们的最大速度)。 此功能也更可靠,因为现在,即使初始客户机断开连接或出现导致连接中断的情况,高速缓存仍会继续填充。 我们将此行为描述为错误的Spawn子请求 此功能还会触发整个内容的缓存填充,只需一次到源服务器的行程即可满足不同的字节范围请求。 Spawn子请求的”小姐”和”缓存填充等待时间”在其使用中相互补充,共同努力加速直播流媒体并改进诸如视频启动和重新缓冲时间等指标。

其他实时流CDN优化

热归档
随着直播流的收视率迅速扩大,以前可以轻松处理50万观众的负载的缓存服务器在几分钟内的收视率翻三倍或四倍时,突然不堪重负。 此外,观众可能集中在特定的地理区域,通常是为了参加受欢迎的体育或政治活动。 对于许多体育直播或锦标赛,观众的集中度很可能在市场周围的参与球队显著更高.

发生这种情况时,需要将实时流段快速复制到受影响的POP内的其他服务器,以帮助分散负载。

热归档是一个过程,自动检测和复制极其流行的内容,如直播流段,在一个流行的多个缓存服务器,以处理巨大的需求. 这是内容交付网络中的常见做法,但这些传播的速度最终很重要。 这是Edgio持续关注的一个领域。 我们最近将复制速度从5秒降低到大约1-2秒。 除了直播流媒体,我们还可以在直播流媒体中制作其他热门内容,如广告。

容量和带宽
容量和带宽是指通过TAP来满足直播流媒体不可预测的需求的额外容量。 正如肌肉车没有立方英寸的替代物,CDN也没有带宽的替代物。 将这些和其他缓存优化策略应用于网络需要有足够的容量和带宽来处理大规模直播流,同时平衡其他用户对其施加的负载。

目前,我们网络上超过80%的内容是视频,其中大部分流量专门用于直播流媒体。 我们在网络上提供了超过125,000个管理的现场活动。 随着内容质量的不断提高以及直播流媒体的日益普及,我们有望在2019年底达到100 Tbps的网络容量。 我们的网络拥有140多个全球POP和5,000个互连或最后一英里连接。

一切协同工作

流媒体直播的繁重需求将使您的技术达到极限。 为数千甚至数百万人提供流畅流媒体需要特殊的缓存配置。 Origin Shield,Partial Cache Sharing,Cache Fill Wait Time,Spawn Sub Request for Miss和Hot Filing的组合是强大的功能,可根据您独特的直播流媒体基础设施和需求进行定制。 它们使我们的CDN能够为直播流媒体事件提供最佳性能,无论对象是否已在缓存中,还是仅在缓存中的一部分,或者缓存填充尚未启动且仍处于待定状态 即使是在这样的情况下,当请求恰好是真正的第一个客户的请求一个独特的内容片段.

CDN是直播视频基础设施中的一个重要组件。 其分布式服务器系统将内容交付给您的用户,因为它考虑地理位置和网络位置以及源站本身,以最快,最可靠的方式交付内容。 但是,优化实时交付CDN的技术与其他也从CDN受益的应用程序(包括(VOD)的视频点播)大不相同。 凭借正确的高速缓存优化和充足的扩展空间,CDN能够应对直播流媒体固有的波动和变化。

我们的CDN提供成熟,久经考验的 内容分发功能 和优化,可最大程度地减少源服务器上的负载,同时向观众大规模交付直播流媒体。 我们的实时视频缓存优化(其中许多优化可针对个人客户进行调整)协同工作,以保护观众的需求,避免视频基础设施不堪重负。