ITPub博客

首页 > 云计算 > 公有云实践 > Netflix如何在云端处理突发的负载高峰

Netflix如何在云端处理突发的负载高峰

公有云实践 作者:出海新观点 时间:2025-07-11 02:22:42 0 删除 编辑


导读

Netflix在四个亚马逊云科技区域全面运作,通过智能引导用户和管理数千个自动扩展计算服务器组来服务其全球流量。在不同时期,他们的服务会遇到可能超出容量的流量激增。本次会议将详细介绍Netflix如何通过将预测性自动预扩展与快速响应的自动扩展相结合,并配合先进的弹性技术(如优先级负载削减、跨区域流量转移、基于服务重要性的定向容量注入等)来解决这些问题。了解如何在保持低支出水平的同时,为突发负载高峰做好准备。

演讲精华

以下是小编为您整理的本次演讲的精华。

在不断演进的流媒体娱乐领域,Netflix作为一个巨头,以其庞大的内容库吸引着全球观众。然而,随着全球观众超过6亿,以及不断扩大的内容库(包括直播活动),管理流量高峰已成为一项关键任务。这项任务的成功与否直接影响数百万观众的观看体验,包括那些渴望观看备受期待的韩国电视剧的观众。

11月中旬的Mike Tyson-Jake Paul拳击赛就是这一挑战规模的一个典型例子,它打破了有史以来最多并发流媒体观看的纪录,峰值高达惊人的6500万并发流。此外,即将于圣诞节当天举行的NFL比赛,歌手Beyonce将担任中场表演嘉宾,预计将带来前所未有的流量高峰。

为了应对这些挑战,Netflix组建了一个由公司内三位最出色的头脑组成的团队,负责在亚马逊云科技上构建解决方案,有效管理这些负载高峰。演讲深入探讨了优先级、负载削减、预测性自动预扩展和快速响应自动扩展等术语,在会议结束时,与会者对这些概念有了全面的理解。

会议展示了Netflix和亚马逊云科技之间强大的合作伙伴关系,Netflix利用亚马逊云科技提供的自动扩展、CloudWatch高分辨率指标和按需计算等功能,使这些策略和机制成为现实。

演讲首先由Netflix工程师Rob提供了问题的高级概述和背景。他透露,Netflix已在云端运行了很长一段时间,拥有一个全球内容交付网络,存储所有视频资产。然而,主要的云足迹位于四个区域:us-east-1、us-west-2、eu-west-1和ap-southeast-1。

Netflix架构最引人注目的一个方面是其主动-主动配置。这种设置允许四个区域中的任何一个处理写入操作,并将这些写入操作传播到其他区域。采用主动-主动架构的主要原因是支持区域故障转移,这是一种工具,使Netflix能够从任何一个区域排空流量,并无缝地将其重定向到其他区域,为用户提供几乎无缝的体验。

从历史上看,Netflix经历了逐渐增加的流量模式,这可以从“每秒启动次数”指标中看出,该指标代表了每个区域的整体负载。该指标代表用户在Netflix应用程序上点击播放的次数。图表显示,低谷和高峰时段之间存在10倍的差异,流量会在一天内逐渐增加,直到在晚上达到峰值,届时大多数观众会收看Netflix。有趣的是,每个区域的峰值时间都不同,反映了这些地区用户的观看习惯。

虽然逐渐增加的流量是常态,但也存在例外情况,如图表上的虚线框所示。这些例外代表了区域故障转移的情况,Netflix有意从一个区域排空流量并将其重定向到其他区域。区域故障转移主要出于三个原因:缓解糟糕软件推送的影响、绕过受损区域,或者最常见的是,练习故障转移过程本身。定期练习故障转移是Netflix弹性策略的核心部分,确保在需要时该机制能够按预期运行。

图表上的线条代表了一次计划中的故障转移,作为Netflix常规操作的一部分执行,以验证该过程。有趣的是,这种故障转移构成了一种自我诱导的负载高峰,因为Netflix有意造成潜在危害,在1-2分钟内从一个区域快速排空流量并将其重定向到“救援”区域。同样,当将流量恢复到原始区域时,Netflix虽然比初始排空更缓慢,但仍然相对较快,导致了更大的负载高峰,因为该区域的服务必须从每秒零个请求(RPS)扩展到正常水平。

除了这些自我诱导的高峰外,Netflix还遇到了其他意外的流量激增。新剧集发布时往往会导致长时间的流量激增,例如热门剧集《陌生人事物》新季发布时。当一部备受期待的新剧在午夜时分推出时,观众会急切地收看,导致在随后几个小时内流量激增,因为他们同时点击播放。

外部事件也会导致流量大幅激增。例如,当一项重大体育赛事如世界杯结束时,观众会蜂拥至Netflix等流媒体平台,产生突然的流量涌入。同样,其他流媒体服务的中断也可能导致用户转向Netflix,从而导致意外的负载高峰。

Shorter流量高峰可能源于重试风暴,即内部服务无法跟上传入负载而变得不堪重负。随着服务自动扩展,调用方重试请求,加剧了情况,导致重试风暴。客户端设备或应用程序中的错误也可能会触发小故障和短暂的负载高峰。

加剧管理这些负载高峰复杂性的是Netflix的微服务架构。有数千个微服务和一个高度复杂的调用图,前端2倍的负载高峰可能会对各个服务产生截然不同的影响。有些服务可能会经历2倍的高峰,而另一些服务则可能较少,甚至由于在调用图中的位置而产生4倍的放大效应。

为了推理这种复杂性,Netflix引入了“缓冲区”的概念,它代表了一项服务处理负载高峰的能力。这种缓冲区分为两种类型:成功和失败。

成功缓冲区是指服务在不会明显降低性能的情况下处理负载高峰的能力,仍然能够向客户端返回成功响应。另一方面,失败缓冲区旨在保护系统的健康状况。在失败缓冲区内运行时,服务会主动限制并向客户端返回错误,牺牲个别请求以维护整体系统稳定性。

一旦服务超出其失败缓冲区,它就会进入“阻塞失败”状态,在这种状态下,它被压垮于限制和拒绝请求,无法继续前进。这种失败模式极难恢复,因为自动扩展和响应式方法在这种状态下可能会发生错误。

在演讲过程中,Rob用一张图解释了这个概念,显示了一个具有2倍成功缓冲区和4倍失败缓冲区的服务。这意味着该服务可以吸收2倍的流量增加,同时仍能返回成功响应,并且可以承受额外4倍的高峰,同时返回错误以保护系统健康。

那么,为什么现在解决这些负载高峰如此重要呢?答案在于Netflix不断发展的业务模式。随着公司进军新的流媒体格式和业务领域,它正在经历越来越多具有广泛吸引力的全球新剧集发布,如备受期待的《鱿鱼游戏》下一季。

Netflix在应对这一挑战时有三个目标:缩短从负载高峰中恢复的时间、更有效地处理流量,以及减少对区域故障转移作为主要应急措施的依赖。此外,公司还旨在改变其弹性姿态,假设负载高峰会定期发生,并确保服务在任何时候都能够抵御这些高峰。

提出的第一个解决方案是最简单但有效的方法:如果预计会发生负载高峰,请提前扩展,尤其是如果可以估计预期负载的话。例如,如果《陌生人事物》新一季定于晚上7点发布,Netflix可以在下午6点开始扩大其机群规模,以匹配预期负载。这种主动扩展实际上增加了成功缓冲区,使Netflix能够更有效地应对预期的流量激增。

虽然自动扩展是一种强大的工具,但它并不是为了大规模主动扩展数千个服务而设计的。相反,Netflix利用其故障转移工具来扩展整个机群。通过将“每秒启动次数”指标映射到每个内部服务的RPS,Netflix可以根据预期的流量增加来确定各个服务集群所需的扩展规模。

这个过程在一张图中得到了说明,Netflix在事件发生前提高了自动扩展组中的最小实例数,以匹配预期负载。一旦发生负载高峰,Netflix的工具会自动将最小实例数降低到之前的水平,允许自动扩展随着需求下降而逐步缩减服务。

Netflix主动工具箱中的另一种工具是流量整形。虽然全球新剧集发布往往具有广泛的吸引力,但有些剧集仅限于特定地理区域,预计在某些区域会更受欢迎。在这种情况下,Netflix不会大幅扩展一两个区域,而是在所有四个区域之间均匀分配流量。这种方法通过在多个区域分散负载来降低风险,允许每个区域的自动扩展按预期运行,而不会使任何一个位置不堪重负。

对于意外的负载高峰,Netflix已优化了其自动扩展策略,以更快地做出反应。Netflix的另一位演讲者Ryan深入探讨了这些改进的细节。

Ryan首先审视了Netflix流量模式的放大视图,并与容量数据进行了叠加。通常情况下,容量会平滑地增加以匹配逐渐增加的流量,然后随着需求减弱而减少。然而,这种方法很难有效应对突发的负载峰值。

分析了一项遭受每秒6万个请求突发峰值的服务,Ryan注意到,检测负载增加的时间近乎4分钟。此外,一旦实例被调配,它们需要大约6分钟才能启动。由于初始扩展不足,该过程不得不重复进行,导致这一大规模负载峰值的总恢复时间约为20分钟。

为解决这一问题,Netflix将影响恢复时间的组成部分分解为:检测(负载到达并开始扩展时)、调配(由亚马逊云科技提供的控制平面)、系统启动、应用程序启动,以及最终的流量服务。

Netflix开发了一个实验设置,以合成方式产生负载并模拟负载峰值,从而允许他们将现有策略的性能与新配置进行比较。同时进行了多轮实验以确定最有效的方法。

通过数据分析,Netflix确定了影响扩展响应时间的主导因素。虽然从亚马逊云科技调配相对较快,但检测时间、应用程序启动和系统启动是主要瓶颈。

为解决检测阶段,Netflix从CPU目标跟踪转向基于每秒请求数(RPS)的扩展。历史上,CPU目标跟踪用于逐渐变化的流量,但在10倍负载峰值期间无法提供足够信息。在50%的CPU利用率下,2倍或10倍的流量增加都会导致100%的CPU使用率,掩盖了真实的负载峰值幅度。

此外,在负载削减期间(拒绝请求以保护系统),CPU利用率不再准确反映需要处理的工作负载,因为拒绝请求的CPU密集度较低。

为此,Netflix引入了“RPS锤策略”,这是一种旨在实现“一次成功”的阶梯扩展策略。一旦检测到每秒请求数超过预期水平,该策略就会以一步到位的方式调配满足需求所需的精确容量。这种方法避免了逐步2倍扩展的低效或过度调配的浪费。

此外,Netflix采用了更高分辨率的指标,利用EC2的详细监控功能从CloudWatch获取一分钟分辨率的指标。对于自定义指标如RPS,Netflix优化了其架构,以5秒的分辨率将指标发送到CloudWatch,利用高分辨率指标支持。

通过以更高分辨率添加更多数据点,Netflix能够更快地检测流量增加,实现了3倍的检测时间改进。

接下来,Netflix着眼于优化应用程序启动时间。分析显示,应用程序启动时间存在长尾部分,大多数系统能够在一分钟内启动,但少数异常值严重影响了整体性能。通过消除这一长尾部分,Netflix实现了更广泛的性能提升。

对于系统启动,Netflix利用了所有服务共用的基础操作系统。通过分析和优化启动链、并行化顺序步骤,Netflix实现了2倍的系统启动时间改进。

将这些改进结合起来,Netflix展示了令人印象深刻的结果。在超过2倍的负载增加情况下,他们的新自动扩展策略迅速启动,一步到位。检测时间缩短至1分钟,启动时间缩短至2分钟。因此,总体恢复时间从之前的20分钟窗口缩短至3分钟,这是一个了不起的进步。

然而,在完全调配扩展容量之前,Netflix仍然面临着在这关键的3分钟内保持可用性的挑战。这就是Netflix的另一位演讲者Joey分享了他们在负载峰值期间保护用户体验的策略。

第一步是在Netflix内部建立对服务关键性的一致理解。Netflix不再讨论分层分类的细微差别,而是采用了一组标签来标识每项服务的关键性、业务领域和生命周期。最相关的标签是可用性层,指示服务的关键性,以及业务领域,指定其支持的领域,如点播视频(VOD)或工作室运营。

有了这个框架,Netflix就可以定义不同层级的后果,并了解如何相应地设置缓冲区。Joey阐述了缓冲区的概念,使用高速公路的比喻说明了从成功缓冲区到失败缓冲区的过渡。

在成功缓冲区内,高速公路相对不拥挤,车辆(请求)顺畅流动。随着负载在成功缓冲区内增加,高速公路变得更加拥挤,但所有请求仍在成功服务。

进入失败缓冲区后,Netflix必须开始“管制”高速公路,拒绝请求以防止进一步拥堵并保护系统健康状况。这类似于关闭进入拥堵高速公路的入口匝道,防止更多车辆进入并加剧情况。

如果超过失败缓冲区,服务将进入“阻塞失败”状态,在这种状态下,它被拒绝请求的工作量压垮,无法取得进展。这种情况类似于交通堵塞,车辆无法前进或离开高速公路。

为防止阻塞失败,Netflix在成功缓冲区内创新地引入了优先级CPU负载削减。这个概念在进入失败缓冲区之前引入了一个“黄灯”,在这个阶段,较低优先级的请求会被削减,以保持关键流量的可用性。

Joey将这种方法比作在拥堵期间允许救护车通行高速公路,同时拒绝非必需的跑车。

Netflix的开发人员为他们的服务设置了目标和最大利用率阈值,定义了成功和失败缓冲区的边界。例如,40%的CPU目标和90%的最大值将把成功缓冲区的开始设置在40%利用率,失败缓冲区的开始设置在90%。

值得注意的是,成功缓冲区的大小与服务的启动时间成正比。启动时间较长的服务必须运行在更“冷”(较低利用率)的状态,以依赖反应式措施来抵御负载峰值。

然而,开发人员希望获得更细粒度的控制,允许他们根据优先级在单个应用程序内对请求进行细分。这导致了渐进式负载削减的概念,不同类别的流量在不同的利用率水平被削减。

所呈现的图表说明了这一概念,x轴表示系统负载,y轴表示每个优先级存储桶被删除的流量百分比。

在Netflix,批量流量(罕见的非必需请求)预计会在进入成功缓冲区之前就几乎完全被删减。尽力而为的流量,如设备预取或体验增强,会在成功缓冲区内(40%至60%利用率之间)开始被删减。

随着利用率进入失败缓冲区,降级流量(如个性化功能)会被删减,牺牲非关键体验方面以维持核心功能。最后,关键请求(如视频播放所需)只有在进入失败缓冲区时才会被删减,这是最后的手段。

为确定请求优先级,Netflix服务依赖于元数据,如请求上下文(URL、标头、有效负载),以及使用Netflix设备协议的后备机制,客户端设备通过标头传递每个请求的优先级。

这种优先级负载削减方法非常有效,允许Netflix通过尽早删减低优先级流量并在成功缓冲区内创造更多空间而大幅扩展。一张图表显示,即使在400倍的负载峰值期间,非关键流量的删减也会很早开始,在避免阻塞失败导致的急剧下降的同时,平衡了成功请求。

虽然优先级CPU负载削减解决了CPU密集型服务的问题,但Netflix也解决了I/O密集型服务访问数据存储或调用其他服务的挑战。在这种情况下,高速公路的比喻变得更加复杂,因为“车辆”(请求)会在一段时间内消失,然后重新出现,如果它们同时返回,可能会导致拥堵。

为解决这一问题,Netflix基于请求延迟而不是CPU使用率来模拟利用率。通过测量系统在正常和负载峰值期间的典型性能,Netflix可以将问题重新表述为利用率问题,并应用相同的优先级负载削减技术。

例如,如果某服务的目标延迟为50毫秒,Netflix会统计比该阈值慢或快的请求数量,从而导出利用率指标。如果88%的请求比目标慢,则该服务将被视为88%利用率,根据延迟分布在适当的缓冲区内触发负载削减。

这种方法允许Netflix使用与CPU密集型服务相同的工具集来保护I/O密集型系统,只需调整利用率指标和删减缓冲区即可。

一项实验证明了这种技术在处理高达50-100Gbps流量的延迟敏感Blob存储服务中的有效性。随着负载超出系统容量,优先级负载削减机制启动,拒绝低优先级文件请求,以保留关键文件操作的容量。

在整个测试过程中,该服务的最大CPU利用率仅为3%,突显了基于延迟的负载削减对于I/O密集型系统的重要性。

利用其主动-主动架构,Netflix实现了另一种强大技术:跨区域重试。通过在不同区域以较低优先级重试受限请求,Netflix能够在负载高峰期间挽救超过90%的失败请求。

为防止级联故障,重试请求在发送到其他区域时会降低优先级。这确保了如果第二个区域也过载,它会立即删减重试请求,为关键流量保留容量。这种跨区域转移技术在缓解负载高峰对用户的影响方面非常有效。

虽然这些技术富有创新性和强大功能,但仍存在一个关键问题:如何证明它们在大规模情况下能按预期工作?主讲人强调了在生产环境中持续测试弹性机制的重要性,因为问题往往只会在特殊情况或大规模情况下显现。

为验证其策略,Netflix采用了一个“弹性测试金字塔”,由多个层次组成。金字塔的基础是针对单个服务进行的合成负载测试。这种方法旨在发现低级错误,如应用程序代码中的瓶颈或错误配置的负载削减设置。

下一级别是使用实时流量在生产环境中进行测试。这一步骤至关重要,以确保正在测试的实际自动扩展和负载削减配置与生产环境中部署的配置相同。

Netflix利用其内部“混沌自动化平台”设置实验,包括一种新的“自动扩展挤压测试”。该测试会对服务施加4倍的负载高峰,并监控其行为,验证负载削减、优先级负载削减和自动扩展是否在预期恢复时间窗口内启动。它还会测量服务的成功和失败缓冲区,全面评估其弹性。

在金字塔的更高层次,Netflix进行了区域级别测试,这是一项令人难以置信的壮举,有赖于其云架构。在此测试中,所有全球Netflix流量都会被重定向到单个区域,实际上是从单一位置运行整个Netflix平台。这种方法有助于发现可能仅在极端规模或特定实例数量或RPS级别下才会显现的问题。

金字塔顶端是区域负载测试,它使用合成负载通过前门(Zuul网关)模拟用户流程和应用程序流量。这种技术使Netflix能够在事件发生之前模拟重大事件(如标题发布),从而预测和验证系统在这些情况下的行为。

此外,区域负载测试还有助于创建旨在触发Netflix系统中特定故障模式的复杂测试用例。通过将平台推向比全球峰值流量更高的规模,Netflix可以在最极端的条件下对其弹性机制进行压力测试。

主讲人强调,通过结合这些测试方法,Netflix可以在各个层面验证其系统的弹性,从单个应用程序到服务交互和大规模运营,确保其为即使是最严重的负载高峰做好准备。

总之,本次会议提供了有关Netflix在其大规模流媒体平台上处理突发负载高峰的创新策略的宝贵见解。主讲人强调了多管齐下的重要性,将主动措施(如预测性扩展和流量整形)与反应性技术(如优化的自动扩展、优先级负载削减和跨区域重试)相结合。

他们强调了在生产环境中持续测试和验证的必要性,因为弹性机制往往只有在特殊情况或大规模情况下才会经受真正的考验。

通过利用亚马逊云科技的可扩展性和功能(如自动扩展、高分辨率指标和按需计算),Netflix已经开发出一整套综合工具,以确保即使在最极端的负载高峰期间,也能为全球观众提供高质量的流媒体体验。

本次会议展示了Netflix与亚马逊云科技之间强大的合作伙伴关系,证明了云技术如何能够支持创新解决方案,应对流媒体娱乐领域不断演进的复杂挑战。

我们正处在 Agentic AI 爆发前夜。 2025 亚马逊云科技中国峰会提出,企业要从 " 成本优化 " 转向 " 创新驱动 " ,通过完善的数据战略和 AI 云服务,把握全球化机遇。亚马逊将投入 1000 亿美元在 AI 算力、云基础设施等领域,通过领先的技术实力和帮助“中国企业出海“和”服务中国客户创新“的丰富经验,助力企业在 AI 时代突破。




来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70038688/viewspace-3090751/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2024-05-21

  • 博文量
    679
  • 访问量
    565016