Home 技术文章 为什么网络容量不足:缓存策略可实现更好的流媒体传输
Applications

为什么网络容量不足:缓存策略可实现更好的流媒体传输

About The Author

Outline

为了跟上不断增长的媒体内容量, Verizon Media (现称Edgio Media) Platform 已投资扩大我们的全球缓存足迹。 仅在2019年,我们就增加了超过25 Tbps的容量,7个全球POPS以及近900个最后一英里连接。 虽然原始容量在提高性能方面非常有效,但它还不足以满足不断增长的全球流媒体内容需求,也不是一种可持续的业务模式。

为了最大限度地提高我们网络容量的可用性,我们在控制运营和基础设施成本的技术,流程和工具上进行了同等投资。 我们的研究团队不断拓展缓存技术的界限,应用和优化流程,使我们的网络运营商能够精确控制内容的缓存方式,时间和位置。

现代缓存策略

任何缓存策略的目标都是将最受欢迎的内容保留在缓存中,同时快速高效地删除不太受欢迎的内容。 多年来,研究人员和软件开发人员设计了无数旨在解决缓存难题的策略。 这些范围从相对简单到极其复杂。 一些更受欢迎的策略包括:

  • 最近使用最少的(LRU)
  • 最不常用的(LFU)
  • 先入先出(FIFO)

如果有一个单一的缓存策略来处理所有情况,将会很方便。 但是,此类解决方案尚未开发,而且特定策略的有效性可能因服务器和磁盘大小,通信模式和其他因素而有很大差异。 基于广泛的测试,我们发现LRU在命中率和磁盘I/O之间提供了最佳的折衷方案,在保持高命中率的同时,写入量比FIFO少60%。 此外,对于我们的CDN中使用的磁盘大小,LRU与S4LRU (Quadruply-segmented LRU)等更复杂的策略具有同等的性能。 您可以在我们去年在智利瓦拉斯港举行的被动和主动测量会议(PAM)上发表的这篇文章中了解更多详细信息。

使用混合LRU发展缓存策略

尽管LRU非常适合我们的环境,但我们始终在寻找推动创新和提高客户绩效的方法。 这导致了我们最近在我们的平台上添加了一项名为Hybrid LRU的新功能。 它被称为混合,因为它在LRU之上添加了一个抽象层。 如果我们不使用混合功能,系统将继续正常运行,因此很容易理解和激活或停用。

我们使用混合方法的目的是调整LRU系统,使我们能够更好地控制特定内容。 控制指的是能够根据预定义的设置显式存储某些内容的时间更长或更短。

这一点非常重要,因为整个视频流领域都在发生变化,尤其是直播流媒体的快速增长。 仅我们的网络就承载了数十万场现场活动,其中许多活动都交付给数百万并发观众。 尽管此类活动非常受欢迎,但一旦直播活动流完成,它就不可能以任何大容量重新流式传输。 使用混合LRU,我们可以指定更短的缓存周期,从而为其他媒体和内容释放宝贵的缓存资源。

我们正在尝试锁定某些内容,并尽最大努力保证这些内容将保留在我们的缓存中。 这对于保存期限有限,但在直播活动(成为视频点播内容的正常片段)后几个小时内仍有大量需求的直播视频流特别有用。 如果内容提供商明确希望在特定时间段内锁定某些内容,以便不会击中其源服务器,则也可以使用此功能。

混合LRU还允许我们将一些内容存储更长的时间。 例如,如果源服务器位于世界的远程位置,则这很有用,当CDN的缓存中没有请求的内容时,这可能导致QoE较差 。 在这种情况下,新的客户端请求将触发源站需要填充的缓存丢失,可能导致重新缓冲。 老化此内容较慢将在缓存中停留更长的时间,并减少此类源站填充的数量。

混合LRU使用参数

混合LRU包含两个可调参数,使我们能够延迟或加快从缓存中删除或删除特定内容:

  • 账龄率
  • 是时候让(TTL)上线了
老化率定义了逐出率随着时间的推移而增加的比率。 这是一种缩放功能,操作员可以使用它来使内容的使用速度更快或更慢。 老化率的默认值为10,因此,例如,将此值更改为200将使视频文件的老化速度加快20倍(200/10 =20)。 也可以将该值更改为5,以一半的默认速度保存一段内容。

生存时间(TTL)参数可将商品的使用期限缩短指定的数量。 它的工作原理是,在此变量设置的持续时间内,为项目提供极低的逐出分数。 这会强制项目在上次访问后的指定时间内保留在超速缓存中。 默认值为0秒,这意味着没有特殊的首选项。

下表显示了这些可调参数如何调整内容在缓存中的保留时间。 将这些参数视为可精确调整以满足内容需求的旋钮或刻度盘非常有用。 这些图表显示了对象在等待访问时在服务器缓存上的老化情况。

首先,让我们来看看账龄率。 传统的LRU对象随着时间的推移以相同的速度老化。 但随着我们打开老化率拨号盘,随着时间的推移,项目老化速度会更快。 同样,当我们朝相反方向转动表盘时,项目的老化速度比LRU慢。 如图一所示,转动拨号盘,缓慢老化的项目永远不会超过”驱逐阈值”。 借助此控制,我们可以更快地移除项目以释放空间,或根据需要将项目保留在磁盘上更长的时间以减少源站拉动或其他原因。

与老化率相比,TTL允许我们更改特定项目的缓存能力。 对于使用TTL函数设置的持续时间,项目在磁盘上时不会老化,因此被驱逐的可能性较小(甚至不太可能)。 TTL到期后,项目可以开始老化,采用传统的LRU方式,也可以使用快速老化或缓慢老化(具体取决于操作员的配置方式)。 在下图中,具有缓慢老化的TTL会将磁盘上的项目保留到不超过缓存清除阈值的程度。 相反,TTL确保实时视频流至少在事件的持续时间内被缓存,但在这之后,使用快速老化功能将其从磁盘中快速删除。

在大多数情况下,更改老化率值是调整从缓存中清除内容的时间的首选方法,因为它可以轻松适应磁盘上的通信量。 另一方面,TTL更具攻击性,可以有效地锁定磁盘的一部分,直到内容发布为止。 但是,如这些示例所示,这两种控件可以一起使用,以可靠地实现预期效果。

前瞻性缓存策略

广泛的缓存策略(如LRU)就像一个大锤,无论类型或文件大小如何,都能平等地处理所有内容。 如果文件在特定时间内没有被命中,它将从缓存中删除。 同时,其他文件(如一次性实时视频流/事件)在未来不太可能获得点击的情况下,会位于缓存中,从而占用空间。 混合LRU增加了改进级别,旨在减少不必要的缓存占用空间并提高缓存命中率。 这就像使用小锤子或螺丝刀来更准确地控制哪些文件应保留在缓存中以及哪些文件应删除。

目前,混合LRU处于试验阶段,需要操作员调整内容的逐出时间范围。 展望未来,我们正在研究是否可以利用请求配置文件和其他因素自动进行调整。 例如,实时事件具有许多不同的配置文件–同时收到数千个相同文件段的请求–然后是视频点播文件。 我们还在考虑根据文件大小进行调整–您是否希望将大文件保留在磁盘上以最大程度地减少网络流量,还是希望将小文件保留在手边以优化缓存命中率?

尽管我们对缓存系统和策略的性能和成熟度充满信心,但优化有限资源的需求仍然是一项重要且持续的工作。