Prime Video 通过 Amazon S3 Express One Zone 提高了直播分析性能

作者: Jared Treat, Priya Dhingra, Manveen Kaur |

亚马逊 Prime Video 提供精选的原创内容和授权电影和电视节目,您可以作为亚马逊 Prime 订阅的一部分进行直播或下载。Prime Video 的遥测平台是监控播放性能、保存数据快照以供故障恢复、提供业务分析以及在其全球流媒体服务中生成实时见解的支柱。每分钟,数百万台设备在 Prime Video 上流式传输内容,Prime Video 内部生成大量指标,这些指标经过实时处理以改善客户体验。该遥测平台持续跟踪来自全球设备的流媒体指标,包括视频质量、带宽使用情况和会话时长,从而可以实时监控和分析系统运行状况和性能。该平台中的一个关键机制是检查点,即每隔 70 秒保存所有活跃流媒体会话快照的过程,以保持容错能力并从潜在故障中快速恢复。在 NFL 和 NBA 比赛等高流量活动中,这些检查点会对底层存储服务造成大量写入操作。

为了在遥测平台上保持一致的数据流,Prime Video 使用 Amazon S3 Express One Zone 优化了检查点操作,这是一种高性能存储类,旨在处理检查点期间突然出现的请求峰值。S3 Express One Zone 每秒可支持多达 200 万次读取和高达 200,000 次写入,有效管理检查点,同时将 HTTP 503 减速错误率保持在 0.1% 以下,即使在高流量事件期间也是如此。

在本博客中,我们将探讨 Prime Video 如何使用 S3 Express One Zone 来提高其遥测平台在高流量事件中的性能。我们研究了遥测平台的初始架构、高流量事件期间面临的挑战,以及 S3 Express One Zone 如何通过处理检查点操作来帮助保持对流媒体性能的持续可见性。

Prime Video 遥测平台的初始架构

图 1-初始遥测平台架构

图 1:初始遥测平台架构

Prime Video 的遥测平台由三个主要的数据管道组成,它们共同处理流数据。首先,遥测事件摄取管道在全球范围内收集和验证来自客户设备的回放数据,在转发到处理之前用元数据丰富这些数据。其次,遥测事件处理管道将这些原始回放事件转换为有意义的会话化数据。基于 Apache Flink 构建的 StreamProcessor 应用程序在内存中维护会话状态,并每 70 秒将检查点保存到 Amazon S3 标准。第三,遥测事件发布管道随后将处理后的数据传输到各种下游服务,例如 Amazon S3、Amazon Kinesis 和 Amazon SQS,从而实现商业智能和监控功能。遥测平台团队希望优化事件处理管道的检查点性能,以保持持续的监控能力,尤其是在高流量事件期间。

挑战:在检查点期间管理突发上传

作为事件处理管道的一部分,StreamProcessor 应用程序每 70 秒保存一次活跃流媒体会话的会话状态检查点。该应用程序基于 Apache Flink 构建,在多个集群上运行,每个集群处理一部分流数据。这些检查点允许每个集群在出现故障时从其上次保存的状态中恢复和恢复处理。虽然检查点对于容错至关重要,但检查点故障可能会触发集群重启,从而导致向事件发布管道传输数据时出现短暂延迟。尽管这些延迟不会直接影响 Prime Video 客户的流媒体体验,但它们可能会影响运营商检测和诊断客户面临的性能问题的能力,因此遥测平台团队希望优化检查点性能,以保持一致的实时监控能力。

在高流量活动中,收视率增加了数百万并发用户,Checkpointing 对底层存储服务提出了很高的性能要求。随着收视率的增加,流媒体数据量显著增加,从而导致检查点数量的增加。每个检查点写入数 PB 的数据,事务速率每分钟增加数百万个,而且所有这些写入必须每 70 秒并行发生一次。

最初,StreamProcessor 应用程序将检查点保存到 Amazon S3 的通用存储桶中,其对象存储在 S3 标准存储类中。S3 通用存储桶在正常操作期间提供卓越的性能,每个分区 S3 前缀每秒至少可提供 3,500 个 PUT 请求。虽然客户可以跨多个前缀并行处理请求以扩展性能,但这种扩展是逐步发生的,不是即时的。当 S3 正在扩展以支持更高的请求速率时,客户可能会收到 HTTP 503 减速错误。对于 Prime Video 的 StreamProcessor 应用程序,在日常操作中,错误率通常最低(小于 0.1%),但在峰值事件中,错误率会增加,写入速率要高得多。虽然这些减速错误并不总是会导致检查点故障,但它们会增加检查点失败的可能性。发生故障时,受影响的集群需要重启,恢复需要几分钟。

遥测平台利用分布式架构,将工作负载分散到多个集群中。这种设计限制了单个集群故障的影响,因为只有受影响集群的数据在重启期间会出现延迟。但是,鉴于该平台对数据可用性和延迟的高标准,尤其是在高流量事件期间,该团队需要一种能够以高每秒事务数 (TPS) 处理这些突发写入模式且减速错误最小的存储服务。

进入 Amazon S3 Express One Zone

对于这种直播分析工作负载,Prime Video 团队将 Amazon S3 Express One Zone 确定为在高流量事件期间处理检查点写入操作的解决方案。S3 Express One Zone 是一种高性能、单一可用区存储类别,旨在为最常访问的数据提供一致的个位数毫秒数据访问权限。使用 S3 Express One Zone,数据存储在不同的存储桶类型中,即 S3 目录存储桶。将对象上传到目录存储桶时创建的目录没有每个前缀的 TPS 限制。相反,每个目录存储桶可以支持多达 200 万次读取和每秒最多 200,000 次写入。这种灵活性允许应用程序根据需要并行处理目录内和目录间的读写请求,使其适用于请求率突然激增的工作负载。

图 2-使用 S3 Express One Zone 修改后的遥测平台架构

图 2:使用 S3 Express One Zone 修改后的遥测平台架构

结果

该团队从 S3 标准版迁移到 S3 Express One Zone,通过现有的 S3 API 访问存储类别。影响立竿见影——错误率一直保持在 0.1% 以下,应用程序的重试机制可以轻松处理这些最低的 503 错误。在 NFL 比赛等高流量事件中,S3 Express One Zone 在不触发应用程序重启的情况下成功处理了密集的写入操作。这使 Prime Video 运营商能够以低延迟访问监控数据,从而使他们能够快速检测和解决影响客户的性能问题。

结论

在这篇文章中,我们研究了 Prime Video 如何成功利用 S3 Express One Zone 持续监控数百万个流媒体会话,而不会出现任何应用程序重启或延迟。他们求助于 S3 Express One Zone 来优化检查点,即使在高流量事件期间也能将减速错误率保持在 0.1% 以下。

Prime Video 的经验表明,Amazon S3 Express One Zone 如何提高需要频繁执行检查点操作、突发成千上万个 TPS 的应用程序的性能。虽然此示例侧重于流式分析,但 S3 Express One Zone 也非常适合应用程序中的类似模式,例如使用检查点来保存模型进度的机器学习训练作业、保留计算状态的 AI 推理引擎以及维护集群范围快照的分布式计算系统。

如果您有兴趣了解有关 S3 Express One Zone 的更多信息,请访问 S3 用户指南。如果您有任何问题或意见,请在评论部分留言。



Jared Treat

Jared Treat

Jared Treat 是亚马逊 Prime Video 的软件开发经理。他的团队拥有遥测平台,该平台在流式传输时从客户设备收集数据,实时处理这些数据,并发布一系列绩效和参与度指标。这些指标用于从实时性能监控和警报到长期业务报告的所有方面。

Priya Dhingra

Priya Dhingra

Priya Dhingra 是亚马逊 Prime Video 的软件开发工程师。她在 Playback Insights 数据平台团队工作。她的团队负责开发和管理 Prime Video 的报告基础设施。它专注于提供一个弹性平台,使数据能够从一端无缝流向另一端。

Manveen Kaur

Manveen Kaur

Manveen Kaur 是亚马逊云科技的高级技术产品经理。她专注于 S3 Express One Zone 存储类。在业余时间,Manveen 喜欢旅行、烹饪和与家人共度时光。


*前述特定亚马逊云科技生成式人工智能相关的服务仅在亚马逊云科技海外区域可用,亚马逊云科技中国仅为帮助您发展海外业务和/或了解行业前沿技术选择推荐该服务。