Netflix 如何使用亚马逊云科技进行多区域缓存复制

云计算
re:Invent
0
0
## 视频 <video src="https://dev-media.amazoncloud.cn/30-LibaiGenerate/31-LiBaiRebrandingVideo/NFX304-How_Netflix_uses_AWS_for_multi_Region_cache_replication-LBrebrandingWCaptionCN.mp4" class="bytemdVideo" controls="controls"></video> ## 导读 EVCache 是亚马逊云科技上托管的关键第 0 层微服务,它为 Netflix 提供了低延迟、高可用性缓存和内存数据库解决方案。为了确保 EVCache 数据的全局可访问性,无论其写入到哪个亚马逊云科技区域,Netflix 开发了一种大规模分布式系统——跨区域复制 (CRR)。本论坛深入研究 CRR 的设计和架构,展示 [Amazon SQS](https://aws.amazon.com/cn/sqs/?trk=cndc-detail)、Apache Kafka、负载平衡器、自动扩展和 [Amazon EC2 ](https://aws.amazon.com/cn/ec2/?trk=cndc-detail)等服务的有效利用。通过利用这些技术,Netflix 实现了跨区域每秒约 3000 万个请求的吞吐量,同时将 P90 延迟保持在 2 秒以下。 ## 演讲精华 <font color = "grey">以下是小编为您整理的本次演讲的精华,共1500字,阅读时间大约是8分钟。如果您想进一步了解演讲内容或者观看演讲全文,请观看演讲完整视频或者下面的演讲原文。</font> 亚马逊云科技的Pretti Sherma作为主要解决方案架构师,欢迎观众参加讲座。在过去的四年里,她与Netflix紧密合作,参与了诸多突破性项目,这让她感到十分兴奋。正如许多观众一样,Pretti也是Netflix的忠实拥趸。她特别喜欢登录后立刻呈现的个性化主页,考虑到Netflix全球拥有超过24亿客户,这一成就尤为令人印象深刻。提供无缝、有弹性的用户体验所面临的挑战之大令人难以置信。Pretti感谢Netflix工程部门的无名英雄以及亚马逊云科技的基础设施支持。 每当Pretti点击她的个人资料并进入个性化主页时,背后都有数百个微服务被调用。所有这些微服务都需要数据来快速显示专为Pretti定制的内容。此外,Netflix还需要构建冗余,以便在一个区域发生故障时无缝地进行切换。在Netflix如此庞大的规模下,让每个开发人员团队维持这种级别的弹性和快速数据访问是不可能的。在主页的约100次调用中,70%来自缓存。 这正是Prithviraj、Shriram及其团队发挥作用的地方。多年来,他们建立了一个名为EVCache的系统,使开发者团队能够实现无摩擦的多区域数据访问和故障切换。它允许开发人员只关注他们的业务逻辑,而平台在后台处理弹性和性能。 EVCache代表临时易失缓存,尽管“易失”部分有点误导,因为它使用SSD。这是一个基于memcached的分布式分片键值存储,客户端库本身内置了自动发现和全局复制功能。EVCache旨在抵御实例、可用区甚至整个区域的故障。客户端了解拓扑结构,首先将读取操作路由到本地可用区, 在缓存丢失时在区域之间进行故障切换。 在一个典型的情况下,EVCache会在每个区域部署三个副本,这些副本分布在三个可用性区域中。这个服务在亚马逊云科技的四个区域中的二百个集群的二万二千零二十个实例上运行。它能够每秒处理三千万次操作,存储两万亿个项目,总计十四点三亿兆字节的数据。在这样的背景下,Shriram详细介绍了EVCache的全球复制能力。复制既发生在同一个区域内的各个实例之间,也跨越不同的区域进行。同一区域内的复制由EVCache客户端自行处理,而跨区域的复制则由一个名为复制服务的独立无状态服务管理。 Shriram通过一个具体的场景来展示了跨区域复制缓存数据的价值。设想一下,一个愉悦的用户登录Netflix,触发了对一百个微服务的调用,其中有七十个来自于缓存。突然,流量从美国东部一区切换到了美国东部二区,但是用户的缓存数据在美国东部二区并不存在。这将导致大量的缓存未命中浪潮,使数据库承受巨大的负载,并为最终用户带来糟糕的性能体验。每个区域有五千万用户,因此影响的范围将是巨大的。 通过预先复制缓存数据,可以在故障切换期间保持用户体验的不中断。预扩展数据库虽然成本高昂且操作复杂,但复制服务提供了一个平台解决方案,降低了成本并防止了糟糕的用户体验。 除了微服务之外,Netflix的一些[机器学习](https://aws.amazon.com/cn/machine-learning/?trk=cndc-detail)算法也将缓存用作持久性存储。在故障切换之后,需要为五亿用户重新计算昂贵的[机器学习](https://aws.amazon.com/cn/machine-learning/?trk=cndc-detail)结果,这将产生巨大的费用。避免这种计算和相关云的支出是复制服务的另一个驱动力。 总之,复制是一个数据移动问题。通过构建一个集中的服务而不是让每个团队自己去解决,Netflix创建了一个共享平台,改善了最终用户体验。复制服务通过处理复制使得团队能够专注于业务逻辑,从而提高了开发者的生产力。 复制服务的设计理念包括高可用性、尽量一致性、可扩展性、成本效益和可调节性。尽管强一致性并非必要条件,因为它会带来复杂性,但复制延迟的服务水平协议(SLA)是可以配置的,默认值为2秒。这种可扩展性使得针对不同使用场景的支持成为可能,例如只需通过调整Kafka设置就可以实现只复制头部日志。 通过详细的操作流程,Shriram解释了EVCache客户端如何将这些突变发送到本地缓存服务,同时将包含元数据(如键、过期时间和压缩等)但不包含完整值的事件发送到Kafka。这样可以避免过度负载Kafka并防止复制过时的值。 复制服务的读者集群以每秒平均31百万的速度消费这些Kafka事件,峰值高达每秒40百万个事件。读者在需要时转换事件,从本地缓存中读取最新值,并向写者集群发送跨区域的完整有效载荷请求。写者然后将值写入目的地EVCache集群。为了确保可靠性,失败的事件将通过SQS队列进行重试,目前每秒可能有30-40个事件失败。 Shriram随后深入了解了关键组件之间的交互。Kafka集群中的每个主题都代表一个EVCache集群,其分区数量与事件量成比例。读者集群作为消费者组从Kafka消费以实现并行处理。读者在需要时转换事件并从本地缓存中获取最新值,然后将其发送到写者。写操作目前使用REST API,但将来将移至gRPC。失败的事件将通过SQS进行重试。 通过可视化工作流程,强调了数据从美国东部1区经由各个组件向美国东部2区流动的过程。从EVCache客户端向其本地缓存发送突变并开始到Kafka的元数据事件。复制服务的读者消费事件(如有需要则转换),从本地缓存中获取最新值,并将有效载荷发送到地区对地区的写者。最后,写者将值写入目的地EVCache集群。 在设计优势方面,Shriram强调了其每个组件都能根据需要进行独立扩展的优势。这种可调性使得端到端的延迟变得可预测。相较于为每个EVCache集群使用一个Kafka集群,这种方法的成本效益更高。通过处理反向压力,可以防止发生级联故障。然而,他也提醒了某些潜在的陷阱,例如Kafka上的自动扩展波动以及客户端驱动架构可能导致的重复操作。 在可观察性方面,Shririram强调了度量和警报在应对呼叫事故管理中的重要性。他展示了他们如何设置事件失败警报,一旦在一分钟内失败次数超过特定的1000次阈值,就会触发,从而实现早期发现复制问题。类似的,他们的延迟警报会跟踪所有主题的尖峰,有助于区分系统性问题还是孤立问题。 自动扩展对于在大规模环境中维持稳定性至关重要。Shririram分享了他们如何通过基于诸如CPU、网络和内部队列大小等指标来调整规模,这些指标是根据过去的流量模式得出的。自动修复功能有助于在无呼叫班参与的情况下解决小型节点故障。他还解释了他们如何检测和防止跨部署的重叠事件,其中一个应用程序最多产生了170万重复事件。 为了提高效率并降低成本,Prithviraj介绍了一系列重大改进。其中之一是在所有缓存集群上使用zstandard批量压缩事件数据,这使得平均负载大小从100kB降低到70kB,同时网络利用率提高了35%。另一项重要的节约是将用于跨区域调用的网络负载平衡器替换为客户端侧负载平衡,这将网络传输成本降低50%,将网络出口从50Gbps降至不到500Mbps。 Shriririram和Prithviraj随后轮流回顾了他们处理事故的经过。Shriram解释了如何利用指标和日志快速诊断延迟尖峰,最终确定根本原因是亚马逊云科技网络问题所需的客户端侧连接重试逻辑。Prithviraj回忆了一次自动扩展波动引发的级联故障,根本原因是无限的内部队列导致内存耗尽。解决方案是更新数据结构。 在总结部分,他们讨论了一些未来的计划,包括向IPv6迁移、采用容器化技术、支持高质量的头部日志记录以及使用一致的架构模式进行延迟队列复制。在感谢观众之后,他们表示期待明年能够回来分享这些新复制用例所取得的成果。 总的来说,这次内容丰富的信息分享了Netflix是如何设计一个高性能且成本高效的系统的,以便在亚马逊云科技上对缓存数据进行地理复制。他们详细阐述了复制服务背后的驱动力、设计理念、运营策略和持续改进的过程——揭示了支撑Netflix为客户提供无缝体验的背后复杂性和挑战。 **下面是一些演讲现场的精彩瞬间:** 普雷蒂·舍玛,作为Netflix的首席解决方案架构师,对她丰富的、鼓舞人心的亚马逊云科技和re:Invent的经验表示感激。 ![](https://d1trpeugzwbig5.cloudfront.net/NFX304-How_Netflix_uses_AWS_for_multi_Region_cache_replication/images/rebranded/NFX304-How_Netflix_uses_AWS_for_multi_Region_cache_replication_0.png) 谢普里希瓦杰和什里拉姆在构建EVCache方面的无私奉献使Netflix的开发者能够迅速访问数据和支持多区域应用。 ![](https://d1trpeugzwbig5.cloudfront.net/NFX304-How_Netflix_uses_AWS_for_multi_Region_cache_replication/images/rebranded/NFX304-How_Netflix_uses_AWS_for_multi_Region_cache_replication_1.png) 玛丽·冈田的愉悦激发哲学与Netflix的使命保持一致,即通过亚马逊云科技的即时内容流媒体为会员带来欢乐。 ![](https://d1trpeugzwbig5.cloudfront.net/NFX304-How_Netflix_uses_AWS_for_multi_Region_cache_replication/images/rebranded/NFX304-How_Netflix_uses_AWS_for_multi_Region_cache_replication_2.png) 关于单个Kafka主题高延迟的警报可能表明存在严重问题,如错误或级联故障。 ![](https://d1trpeugzwbig5.cloudfront.net/NFX304-How_Netflix_uses_AWS_for_multi_Region_cache_replication/images/rebranded/NFX304-How_Netflix_uses_AWS_for_multi_Region_cache_replication_3.png) 演讲者解释了如何在亚马逊云科技中根据CPU利用率低于70%和网络流量低于200MB的条件触发自动扩展,同时使用700个队列来优化成本和性能。 ![](https://d1trpeugzwbig5.cloudfront.net/NFX304-How_Netflix_uses_AWS_for_multi_Region_cache_replication/images/rebranded/NFX304-How_Netflix_uses_AWS_for_multi_Region_cache_replication_4.png) 领导者解释了迁移过程中重复事件导致成本增加的问题,强调了优化的必要性。 ![](https://d1trpeugzwbig5.cloudfront.net/NFX304-How_Netflix_uses_AWS_for_multi_Region_cache_replication/images/rebranded/NFX304-How_Netflix_uses_AWS_for_multi_Region_cache_replication_5.png) 领导者们讨论了如何通过新的数据移动服务实现不同用例,以便迁移到容器。 ![](https://d1trpeugzwbig5.cloudfront.net/NFX304-How_Netflix_uses_AWS_for_multi_Region_cache_replication/images/rebranded/NFX304-How_Netflix_uses_AWS_for_multi_Region_cache_replication_6.png) ## 总结 视频探讨了Netflix如何创建一个名为EVCache的全球缓存复制系统,以确保跨区域快速访问缓存数据。EVCache通过在集群中分布数据并实施全球自动复制,确保了在流量转换区域时缓冲区不会丢失,从而避免了数据库负载高峰。该系统利用Kafka作为元数据,将有效的值负载分离,以最大限度地减少Kafka的开销。读者通过消费Kafka事件来获取更新的值,并将这些值发送到更新远程缓存的作者。延迟服务等级协议(SLA)为2秒。配置文件允许在一致性和性能之间进行权衡。系统自动扩展和负载平衡以优化成本和性能。提高效率的方法包括批量压缩(减少网络带宽35%)和移除网络负载均衡器(降低成本50%)。这个系统每秒处理3000万次请求,具有高度的可可用性。未来的计划包括迁移到IPv6和容器化,以及扩展其应用范围,如预写日志等。 ## 演讲原文 ## 想了解更多精彩完整内容吗?立即访问re:Invent 官网中文网站! [2023亚马逊云科技re:Invent全球大会 - 官方网站](https://webinar.amazoncloud.cn/reInvent2023/?s=8739&smid=19458 "2023亚马逊云科技re:Invent全球大会 - 官方网站") [点击此处](https://aws.amazon.com/cn/new/?trk=6dd7cc20-6afa-4abf-9359-2d6976ff9600&trk=cndc-detail "点击此处"),一键获取亚马逊云科技全球最新产品/服务资讯! [点击此处](https://www.amazonaws.cn/new/?trk=2ab098aa-0793-48b1-85e6-a9d261bd8cd4&trk=cndc-detail "点击此处"),一键获取亚马逊云科技中国区最新产品/服务资讯! ## 即刻注册亚马逊云科技账户,开启云端之旅! [【免费】亚马逊云科技“100 余种核心云服务产品免费试用”](https://aws.amazon.com/cn/campaigns/freecenter/?trk=f079813d-3a13-4a50-b67b-e31d930f36a4&sc_channel=el&trk=cndc-detail "【免费】亚马逊云科技“100 余种核心云服务产品免费试用“") [【免费】亚马逊云科技中国区“40 余种核心云服务产品免费试用”](https://www.amazonaws.cn/campaign/CloudService/?trk=2cdb6245-f491-42bc-b931-c1693fe92be1&sc_channel=el&trk=cndc-detail "【免费】亚马逊云科技中国区“40 余种核心云服务产品免费试用“")
目录
亚马逊云科技解决方案 基于行业客户应用场景及技术领域的解决方案
联系亚马逊云科技专家
亚马逊云科技解决方案
基于行业客户应用场景及技术领域的解决方案
联系专家
0
目录
关闭