为了跟上不断增长的媒体内容数量,Verizon Media (现为Edgio Media)平台投资扩大了我们的全球缓存覆盖范围。 仅在2019年,我们就增加了超过25 Tbps的容量,7个全球POP,以及近900个最后一英里连接。 原始容量虽然能有效提高性能,但并不足以满足全球对流媒体内容不断增长的需求,也不是可持续的业务模式。
为了最大限度地提高网络容量的可用性,我们在技术,流程和工具方面进行了同等投资,以控制运营和基础设施成本。 我们的研究团队不断拓展缓存技术的界限,应用和优化流程,让我们的网络运营商可以精细控制缓存内容的方式,时间和位置。
现代缓存策略
任何缓存策略的目标都是将最流行的内容保留在缓存中,同时快速高效地删除不太流行的内容。 多年来,研究人员和软件开发人员制定了无数策略,旨在解决缓存难题。 这些范围从相对简单到极其复杂。 一些较受欢迎的策略包括:
- 最近使用最少的(LRU)
- 最少使用(LFU)
- 先进先出(FIFO)
如果有一个单独的缓存策略来统治所有情况,将会很方便。 但是,这种解决方案尚未开发出来,而且根据服务器和磁盘大小,流量模式和其他因素,特定策略的有效性可能会有很大差异。 根据广泛的测试,我们发现LRU在命中率和磁盘I/O之间提供了最佳的折衷方案,在保持高命中率的同时,写入次数比FIFO少60%。 此外,对于CDN中使用的磁盘大小,LRU的性能与S4LRU (四分段LRU)等更复杂的策略相同。 您可以在我们去年在智利瓦拉斯港举行的被动和主动测量会议(PAM)上发表的这篇文章中了解更多详细信息。
使用混合LRU演变缓存策略
尽管LRU非常适合我们的环境,但我们始终在寻找推动创新和提高客户绩效的方法。 这导致我们最近在我们的平台上添加了一项称为混合LRU的新功能。 它之所以叫做混合,是因为它在LRU之上添加了一个抽象层。 如果我们不使用混合动力功能,系统将继续正常运行,因此很容易理解和激活或停用。
我们使用混合方法所做的是调整LRU系统,使我们能够更好地控制特定内容。 控制是指能够根据预定义的设置显式存储某些内容更长或更短的持续时间。
这一点非常重要,因为整个视频流媒体格局都发生了变化,尤其是直播流媒体的快速增长。 仅我们的网络就承办了数十万场直播活动,其中许多活动同时提供给数百万观众。 尽管此类活动非常受欢迎,但一旦直播活动流完成,就不可能以任何显著的音量重新进行流式传输。 使用混合LRU,我们可以指定更短的缓存周期,从而释放宝贵的缓存资源用于其他媒体和内容。
我们正在尝试锁定某些内容,并尽力保证这些内容将保留在缓存中。 这对于保质期有限的直播视频流特别有用,但在直播活动之后几个小时内仍可能有大量需求,这将成为正常的视频点播内容。 此功能也可用于内容提供商明确希望在特定时间段内锁定某些内容以使其不会攻击其源服务器的情况。
混合LRU还允许我们更长时间地存储一些内容。 例如,如果源站位于世界的偏远地区,这将非常有用,这可能会导致CDN在其缓存中没有请求的内容时QoE较差。 在这种情况下,新的客户端请求将触发源站需要填写的高速缓存未命中,从而可能导致重新缓冲。 此内容时效越慢将在缓存中停留的时间越长,并减少此类源站填充的数量。
混合LRU使用参数
混合LRU包含两个可调参数,使我们能够延迟或加快从缓存中清除或删除特定内容:
- 老化率
- 生存时间(TTL)
生存时间(TTL)参数可将项目的寿命缩短指定的量。 它的工作原理是在该变量设置的持续时间内为项目提供极低的驱逐分数。 这会强制项目在上次访问后的指定持续时间内保留在高速缓存中。 默认值为0秒,这意味着没有特殊首选项。
下面的图表显示了这些可调参数如何调整内容在缓存中保留的时间。 将这些参数视为可精确调整以匹配内容需求的旋钮或刻度盘非常有用。 这些图表显示了等待访问时服务器缓存上对象随时间的老化情况。
首先,让我们来看看老龄化率。 传统的LRU对象随着时间的推移以相同的速率老化。 但是,随着时间的推移,随着时间的推移,项目的老化速度会更快。 同样,当我们向相反方向转动表盘时,项目的寿命比LRU慢。 转动旋钮,慢速老化的物品永远不会超过图1所示的”驱逐阈值”。 通过此控件,我们可以更快地删除项目以释放空间,或根据需要将项目保留在磁盘上的时间更长,以减少源站拉动或出于其他原因。
与老化率不同,TTL允许我们更改特定项目的缓存能力。 对于使用TTL函数设置的持续时间,项目在磁盘上时不会老化,因此被驱逐的可能性较小(甚至不可能)。 TTL到期后,项目可能以传统的LRU方式开始老化,或快速老化或缓慢老化(取决于操作员如何配置)。 在下图中,具有慢速时效的TTL将项目保留在磁盘上,直到它未超过高速缓存清除阈值。 相反,TTL确保实时视频流至少在事件持续时间内被缓存,但此后使用快速老化功能从磁盘中快速删除。
在大多数情况下,更改老化率值是调整从缓存中清除内容时间的首选方法,因为它可以轻松适应磁盘上的流量。 另一方面,TTL更具攻击性,可以有效地锁定磁盘的一部分,直到内容被释放。 但是,如这些示例所示,这两种控制可以一起使用,以可靠地达到所需效果。
前瞻性缓存策略
广泛的缓存策略(如LRU)就像一个大锤子,它平等对待所有内容,无论其类型或文件大小如何。 如果某个文件在特定时间内未得到命中,它将从缓存中删除。 与此同时,其他文件(如一次性直播视频流/事件)在将来不太可能获得命中记录,占用空间。 混合LRU增加了精简级别,旨在减少不必要的缓存占用空间并提高缓存命中率。 这就像使用小锤子或螺丝刀更准确地控制哪些文件应保留在缓存中以及哪些文件应删除。
目前,混合LRU处于试验阶段,需要操作员调整内容的驱逐时间范围。 展望未来,我们正在研究是否可以利用请求配置文件和其他因素自动进行调整。 例如,直播活动具有许多不同的配置文件–成千上万个相同文件段的请求同时传入,然后是视频点播文件。 我们还在考虑根据文件大小进行调整–您是希望将大文件保留在磁盘上以最大限度地减少网络流量,还是希望将较小的文件保留在手边以优化缓存命中率?
尽管我们对缓存系统和策略的性能和成熟度充满信心,但优化有限资源的需求仍然是一项重要且持续的工作。