在我们的CDN中,我们不断开发新的创新方法,以帮助我们的基础设施在负载突然增加时保持高性能和弹性。 这通常涉及探索我们使用的现有技术的优化。 此外,验证新方法是这一过程的重要组成部分,因为它保证了新的更改在生产环境中产生预期的积极影响。
当内容变得流行时,我们会将其复制到数据中心/入网点(POP)的多台服务器上。 这使我们能够更好地平衡负载并处理此类浪涌,从而降低服务器过载的风险。 这种复制机制称为”热文件”,流行的内容称为”热文件”。 我们最近开发了自适应负载平衡(ALB)优化,通过使其更好地抵御流量激增,从而改进了我们的传统热备案。 特别是,它通过测量服务器负载(而不是依赖于静态阈值)动态决定所需的复制量。 这将负载更均匀地分布在POP中的所有服务器上,从而增加任何POP的整体请求处理能力,从而增加CDN。 我们上一篇关于评估自适应负载平衡系统的文章详细介绍了此优化的机制。
在这篇文章中,我们验证了这种优化在生产中的积极影响。 我们首先定义用于衡量影响的指标。 接下来,我们通过示例展示优化对每个指标的影响。 最后,我们展示了优化对部署了此功能的所有POP的总体影响。 总而言之,我们发现服务器的总时间超出预定义阈值的过度负载至少减少了70%,而几乎所有POP都看到了这一指标的改善。 此优化现已针对所有客户流量全局启用。
定义指标
为了评估这种新优化在生产中的影响,我们定义并监控了三个指标:
- 服务器不稳定性:这是服务器负载与POP中所有服务器的中位负载的比率。
- Hot files数:这是指在任何给定时间由Hot Filing机制复制的文件数。 自适应负载平衡预计会增加热文件的数量,因为热填充是其负载分布的底层机制。
- 服务器在目标偏差上花费的时间:此指标评估自适应负载平衡的有效性。 当我们将目标偏斜度阈值设置为特定值时,我们希望看到大多数服务器的偏斜度通常小于该值。
优化对受监控指标的影响
实现目标偏斜度
下图显示了POP中服务器负载分布的两张快照。 在左侧(没有”自适应负载平衡”),我们看到许多服务器的负载超过了偏差目标(红色框),并且超过了POP中位数的1.8倍。 在右边(使用自适应负载平衡),我们看到服务器之间的平衡更大,没有服务器表现出的负载高于中位数的1.8倍。
使用自适应负载平衡更改负载分布。 我们注意到服务器过载的情况有所减少。
热文件的数量和负载分布
接下来,我们检查了热文件的数量如何受到影响,以及每台服务器上负载的相应更改。 下图显示在弹出窗口上启用ALB时,热文件的数量增加。 这种行为是预期的,因为该机制选择性地增加了从负载较高的服务器卸载文件的机会。
从根本上讲,热归档和ALB可以通过增加为特定文件提供服务的服务器数量来减少单个服务器的负载。 这会增加每台服务器上的存储负载。 但是,与POP提供的文件总数相比,选择在任何给定时间复制的附加文件相对较低,因为它们仅从需要卸载的异常服务器中选择。 在大多数情况下,与总磁盘空间相比,使用的额外高速缓存空间非常小。 因此,权衡是值得的,但重要的是识别和意识到。 在我们的实施中,我们包括了完整性检查,以验证高速缓存的使用情况不受此优化的负面影响。
热文件的数量。 由于尝试卸载离群值服务器,因此打开”自适应负载平衡”(红色标记)时,该数目会增加。
第二个图显示了每个服务器在同一时间范围内在该弹出时传送的流量。 我们观察到,当启用”自适应负载平衡”时(红线虚线),服务器之间的负载将变得更加平衡。 这使得服务器对传入流量具有更强的弹性,并降低了服务器过载的风险。
2004年5月2日至5月5日之间的弹出负载分配(Mbps)。 打开”自适应负载平衡”后,分布将变得更加顺畅,更多的服务器提供的流量更接近中位数。 这有助于降低服务器因新流量而过载的风险。
超过目标偏斜所花费的时间
在这里,我们考虑了一个实验,在这个实验中,流行音乐被设定为保持1.6倍的目标偏斜度。 在下图中,橙色线显示了实验期间”服务器歪斜度”的分布情况。 将此分布与蓝色线(即基线周期内的相应分布(无自适应负载平衡)进行比较,我们发现负载向中位数转移。 值得注意的是,分布的”尾部”也大幅减少,第99百分位数从2.12下降到1.52,低于目标偏斜度。
自适应负载平衡降低了最大服务器负载,并使服务器负载更接近中值。
减少分布中的”尾巴”是优化的主要目标,因为该尾巴中的服务器(即负载最高的服务器)面临着新的流量峰值超载的更大风险。 为了进一步量化这一减少,我们还测量了在试验期间,任何服务器在具有/不具有自适应负载平衡的情况下通过目标传送流量的分钟数:
自适应负载平衡可缩短服务器在超过目标阈值的情况下交付负载所花费的时间。
在这种情况下,我们观察到,在这种流行音乐中,花在目标偏斜度上的时间减少了88%。 这是一个很好的指标,表明自适应负载平衡可以将负载分布保持在所需值周围。
全球部署的结果
在对少数选定的POP进行了优化测试并看到测量指标的良好结果后,我们将该系统部署到每个POP,以量化随时间推移的累计影响。 如前所述,我们测量了POP中服务器在传输流量时所花费的总分钟数(设置为POP中服务器负载中的1.8倍)。 下一个图表显示了服务器在75 POP的阈值上花费的分钟数的两个分布。 蓝色线对应4天的基准数据,橙色线对应4天的自适应负载平衡数据。 分布向左的总体偏移表明,POPS中运行自适应负载平衡的服务器超过阈值花费的分钟数较少。
服务器在4天内为所有POPS提供高于指定阈值(1.8 *中位数)的负载所花费的累计分钟数。 使用”自适应负载平衡”时,分布向左移动,表明该机制将服务器负载保持在低于中位数目标偏差的时间更长。
为了进一步了解对个人POP的影响,我们还记录了每个POP的此指标的百分比变化。 结果显示,一半的POPS服务器的总时间减少了70-95%,高于目标偏差,几乎所有POPS都缩短了高于阈值的时间。
在我们持续努力不断提高CDN的性能和可靠性的过程中,我们最近部署并评估了在Pop内负载平衡流量的方式的优化。 与其他POP相比,此优化可识别超过指定阈值的服务器,并卸载这些服务器,特别是在出现新流量峰值时降低性能影响的风险。 生产结果显示了与早期模拟结果一致的显著改进,显示了优化在保持服务器负载分布在所需偏斜度内的效率。 因此,我们现在已针对所有客户流量在全球范围内启用了这种优化。
特别感谢Angela Chen在实施和部署这一机制方面所做的努力。 同时,感谢Scott Yeager,Derek Shiell,Marcel Flores,Anant Shah和Reed Morrison在一般性讨论中的帮助,感谢Colin Rasor,Richard Rymer和Olexandr Rybak在数据收集和可视化方面的帮助。