Flash Crowd和您的直播流媒体
随着流媒体服务争夺数量有限的观众和注意力缩小,直播活动已成为发行商内容战略的一个重要因素,而直播活动是观众参与度的可靠驱动因素。 然而,尽管直播流媒体可以可靠地为观众提供服务,但可靠地大规模直播活动也会带来一系列挑战。 内容交付网络(CDN)可帮助提供按需可扩展性;但是,即便是CDN也必须针对直播流媒体进行优化。 或许最明显的直播挑战是“闪电人群”——这种现象发生在许多观众同时进入直播流时——渴望赶上开场或加班动作。 在NBA总决赛第6场比赛中,我们通过流媒体直播超过10万个体育赛事观察到的典型观众行为,观众人数迅速增长,在第三季度达到204万观众的峰值。 收视率从不到10,000个会话跳到第一个小时超过100万个,半场后又跳了150万个,有时每分钟新观众增加了100,000多个。 这种快速规模会给任何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作为屏蔽或每个地区(美国,欧盟,亚洲等)的屏蔽Pop。
Origin Shield可帮助我们在流量高峰和拥挤的情况下保护源站服务器。 但是,处理直播的独特流量配置文件可能还不够。
部分高速缓存共享
在直播流中,一种典型模式是多个客户端请求尚未在缓存中的流段。 CDN可以通过多种方式处理这些请求。 首先,它可以向源站同时发送多个缓存填充请求(每个新客户端的请求一个),这有助于最大限度地减少延迟并优化最终用户体验。 第二个选项是发送单个缓存填充请求,该请求可毫不延迟地为第一个客户端提供服务,但让其他客户端等待,直到将完整文件加载到缓存中(此方法旨在最大限度地减少源服务器上的负载)。
不幸的是,这两种选择都不是一个特别好的解决办法。
相反,我们的方法在这两个选项之间取得了平衡,允许在多个客户端之间共享已在运行中的单个缓存填充,请求相同的内容部分已在缓存中。 部分高速缓存共享允许其他客户端从预先存在的高速缓存填充中回放,因此视频内容一旦开始加载到高速缓存中,即可同时交付给多个客户端。 结果:启动时间更快,延迟更短,源站负载更低。
高速缓存填充等待时间
客户端请求视频文件与开始加载到CDN弹出窗口之间有一定的间隔。 这个时间点非常小(它可能只需几毫秒就会发生),但直播流式闪存群组使它成为一个非常重大的挑战,因为它可能由数百甚至数千个请求组成。 在这种情况下,上述部分高速缓存共享功能尚未启动。 通常情况下,这被认为是角落情况,但由于人群繁多,直播更有可能发生这种情况。 在这个关键时刻,CDN可能会同时传递过多请求,使源站不堪重负。
对同一文件的多个请求被池化以防止出现此问题,并且只向源服务器发出一个请求。 缓存填充等待时间是一个虚拟等待室,可改善源站卸载并应对突发拥挤的情况。 当单个请求的HTTP响应标头到达并且一个请求开始从源站接收文件时,缓存可以与所有等待的池用户共享。 实际的”等待时间”(毫秒)具有高度可配置性,可以根据特定的源站功能和客户需求进行微调。
Miss的Sawn子请求
当多个用户请求相同的未缓存内容时(如上所述),第一个客户端可能位于速度较慢的设备上,例如智能手机与3G连接。 这会损害所有其他客户端,因为缓存通常以客户端可以吸收内容的速率填充。 为了避免这种情况,我们可以将缓存填充与潜在缓慢/失败的第一个客户端分离,并更快地从源站填充(以我们的最大速度)。 此功能也更加可靠,因为现在,即使初始客户端断开连接或导致连接断开,缓存填充仍会继续。 我们将此行为描述为Sawn Sub-Request for Miss. 此功能还会触发整个内容的缓存填充,以满足不同字节范围的请求,只需一次到达源服务器。 Sawn Sub-Request for Miss和Cache Fill Wait Time在使用中互为补充,协同工作以加速直播流式传输并改善视频启动时间和重新缓冲等指标。
其他流媒体直播CDN优化
热归档
随着直播流的收视率迅速扩大,以往轻松处理50万观众负载的缓存服务器在几分钟内就突然不堪重负,因为收视率翻了三倍或四倍。 此外,观众可能集中在特定地理区域,通常是为了举办受欢迎的体育或政治活动。 对于许多体育直播或锦标赛,观众的集中度可能会显著提高围绕参赛队伍的市场。
发生这种情况时,需要将实时流媒体段快速复制到受影响POPS内的其他服务器,以帮助分散负载。
热归档是自动检测极为流行的内容(如直播流段)并将其复制到一个POP中的多个缓存服务器以处理巨大需求的过程。 这是内容交付网络中的常见做法,但这些传播的速度最终至关重要。 这是Edgio持续关注的一个领域。 我们最近将复制速度从5秒降低到1–2秒左右。 除了直播流外,我们还可以在直播流中制作其他热门内容,例如广告。
容量和带宽
容量和带宽是指为了满足直播流媒体不可预测的需求而提供的额外的TAP容量。 就像肌肉车没有立方英寸的替代品一样,CDN带宽也没有替代品。 实施这些和其他缓存优化策略需要网络具有处理大规模直播流的容量和带宽,同时平衡其他用户的负载。
目前,我们网络上80%以上的内容是视频,其中很大一部分流量专用于直播流媒体。 我们已在我们的网络上交付了超过125,000个托管直播活动。 随着内容质量的不断提高以及直播流的普及,我们有望在2019年底达到100 Tbps的网络容量。 我们的网络拥有140多个全球POPS和5000个互连或最后一英里连接。
一切协同工作
直播流媒体的繁重需求将把您的技术推向极限。 向数千甚至数百万人提供流畅的流媒体需要特殊的缓存配置。 源站屏蔽,部分缓存共享,缓存填充等待时间,未命中生成子请求和热归档的组合是强大的功能,可根据您独特的流媒体直播基础设施和需求进行定制。 无论对象是否已在缓存中,或仅部分在缓存中,或缓存填充尚未开始且仍处于待处理状态,甚至在请求恰好是第一个客户端对唯一内容的请求的情况下,它们都使我们的CDN能够为直播流事件提供最佳性能。
CDN是实时视频基础设施中的一个重要组件。 它的分布式服务器系统考虑地理位置和网络位置,以及源站本身以最快,最可靠的方式交付内容,从而为您的用户提供内容。 但是,优化CDN以进行实时交付的技术与也受益于CDN的其他应用程序(包括视频点播(VOD))有很大不同。 凭借正确的缓存优化和充足的扩展空间,CDN可以应对直播流媒体固有的波动和变化。
我们的CDN提供成熟,久经考验的内容分发功能和优化,可最大限度地减少源站服务器的负载,同时向观众大规模交付直播流媒体。 我们的实时视频缓存优化(其中许多是针对单个客户进行调整的)协同工作,可保护观众的需求,使您的视频基础设施免受不堪重负。