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