译者 | 李睿
审校 | 重楼
有没有想过Netflix如何让人们目不转睛地盯着屏幕享受不间断的流媒体带来的快乐? Netflix架构提供了流畅的流媒体体验,吸引全球各地的观众。Netflix的系统架构强调了决定未来内容如何形成的重要性。现在开始Netflix流媒体世界的幕后之旅!
Netflix如今成为了一个集娱乐、追尴和尖端流媒体服务于一体的术语。Netflix的迅速走红可能要归功于其庞大的内容库、遍布全球的业务以及富有弹性和创造性的架构。
从1997年提供DVD租赁服务开始,到如今发展成为一家全球主要的流媒体公司,Netflix一直在使用尖端技术来彻底革新媒体消费方式。
Netflix系统架构旨在高效可靠地同时为数百万消费者提供内容。考虑到Netflix在全球190多个国家拥有2亿多会员,其基础设施的可扩展性至关重要。
因此,本文将深入研究Netflix架构的复杂性,并揭示它如何继续塑造人们欣赏最喜欢的节目和电影的方式。
理解Netflix系统架构很重要,其中有几个原因。最重要的原因是,它揭示了Netflix如何为全球客户提供完美的流媒体体验。通过探索这种架构的细微差别,可以更好地了解其成功背后的技术和策略。
此外,其他行业也可以将Netflix的设计作为开发可扩展、可靠和高效系统的蓝图而受益。其设计原则和最佳实践可以提供构建和优化复杂分布式系统的重要经验。
通过了解Netflix的架构,也可以认识到推动数字媒体消费发展的持续创新。
系统设计对于开发复杂的软件或技术基础设施至关重要。这些规范是构建整个系统、推动选择和形成最终产品的基础。然而,系统设计的先决条件是什么?是什么使它们变得至关重要?
系统的功能需求指定了必须包含的特性、功能和能力。这些规范概述了系统的主要目标,并详细说明了各个部分或模块如何相互作用。例如,像Netflix这样的流媒体平台的功能需求可能包括以下内容,包括但不限于:
(1)创建帐户:用户能够轻松创建帐户,为注册提供必要的信息。
(2)用户登录:注册用户应该能够使用身份验证凭证安全地登录到他们的帐户。
(3)内容建议:平台应根据用户偏好、观看历史等相关数据,提供个性化的内容建议。
(4)视频回放功能:用户应该能够无缝地流式传输视频,并具有播放、暂停、倒带和快进等回放控制选项。
非功能需求定义了系统在不同场景下的行为,并确保其满足一些质量需求。它们涵盖了系统的性能、可扩展性、可靠性、安全性和合规性方面。例如,像Netflix这样的流媒体平台的非功能需求可能包括但不限于:
(1)性能要求:在高利用率时期,系统必须保持低延迟和高吞吐量。
(2)合规性要求:对于用户数据保护,平台必须遵守《数据保护条例》标准。
(3)可扩展性要求:基础设施必须是可扩展的,以便在不牺牲性能的情况下处理不断增长的用户流量。
(4)安全性要求:为了防止对用户信息的不必要访问,必须采用强身份验证和加密过程。
(5)可靠性和可用性要求:对于不间断的服务交付,系统需要包括故障转移方法并保证高水平的正常运行时间。
在2008年8月由于数据库损坏而遭受重大挫折之后,Netflix公司得出了一个重要的结论:即有必要从单点故障转向高度可靠、水平可扩展、基于云的解决方案。Netflix公司选择亚马逊网络服务公司(AWS)作为其云服务提供商,并在2015年之前将其大部分服务转移到云端,从而开启了一段革命性的旅程。经过七年的努力,Netflix的云迁移工作于2016年1月初完成,这意味着这家流媒体服务商运营的数据中心全部关闭。
但将业务迁移到云端并不是一项简单的任务。Netflix采用了云原生战略,彻底改变了其运营模式和技术堆栈。这需要采用NoSQL数据库,取消其数据模型的规范化,并从单一应用程序转移到数百个微服务。文化的改变也是至关重要的,例如采用DevOps过程、持续交付和自助服务工程环境。尽管困难重重,但这种转变使Netflix成为一家云原生企业,在快速变化的在线娱乐领域,为未来的扩张和创新做好了准备。
Netflix具有强大的三位一体架构——客户端、后端和内容交付网络(CDN),负责Netflix完美的用户体验。由于全球有数以亿计的观众,每个组件对于提供内容都至关重要。
客户端架构是Netflix体验的核心。这包括用户用来访问Netflix的各种设备,例如电脑、智能电视和智能手机。Netflix混合使用网络界面和原生应用程序,以确保不同平台的用户体验一致。无论采用什么样的设备,这些客户端都管理播放控制、用户交互和界面呈现,以提供统一的体验。由于客户端架构的响应式优化,用户可以轻松浏览广泛的内容库并享受连续的流媒体。
后端架构是Netflix幕后运营的支柱。用户帐户、内容目录、推荐算法、计费系统和其他系统的管理由服务器、数据库和微服务组成的复杂网络完成。除了处理用户数据和协调内容交付之外,后端还处理用户请求。
此外,后端使用大数据分析和机器学习等最先进的技术优化内容交付和个性化推荐,从而提高用户满意度和参与度。
随着时间的推移,Netflix的后端架构发生了重大变化。它于2007年转向云计算基础设施,并于2018年采用Spring Boot作为其主要Java框架。当与AWS提供的可扩展性和可靠性相结合时,像Ribbon、Eureka和Hystrix这样的专有技术对于有效协调后端操作至关重要。
内容交付网络完成了Netflix架构的三位一体。内容交付网络(CDN)是一个战略性的全球服务器网络,旨在以最佳的可靠性和最小的延迟向用户交付内容。Netflix运营着一个名为Open Connect的内容交付网络(CDN)。
它通过缓存和提供离用户更近的网站上的素材,减少了缓冲,确保了视频播放的流畅性。即使在高需求时期,Netflix也通过在全球众多服务器上传播内容来减少拥塞,并最大限度地提高带宽利用率。这种去中心化的内容交付方式改善了全球观众的观看体验,也减少了缓冲时间,提高了流媒体质量。
在过去的几年里,Netflix的Web界面发生了巨大的转变,从Silverlight切换到HTML5,以传输优质视频内容。有了这个更改,就不需要安装和维护浏览器插件,这将简化用户体验。自从推出HTML5视频以来,Netflix已经提高了对各种在线浏览器和操作系统的兼容性,包括Chrome OS、Chrome、Internet Explorer、Safari、Opera、Firefox和Edge。
Netflix对HTML5的使用超越了简单的播放。该平台对采用HTML5表示欢迎,认为这是一个支持众多行业标准和技术进步的机会。
Netflix将其流媒体体验扩展到智能手机和平板电脑,用户是通过其移动应用程序实现的。这些应用程序保证用户可以在旅途中访问他们喜欢的内容。它们可以在多个平台上使用,包括iOS和Android。通过结合本地开发和平台特定优化,Netflix为各种移动设备提供了一个流畅且用户友好的界面。
凭借个性化推荐、无缝播放和离线下载等功能,Netflix的移动应用程序满足了观众不断变化的需求。Netflix移动应用程序的用户可以在开车、旅行或在家时观看他们最喜欢的电视剧和电影。Netflix致力于通过频繁的升级和改进,提供迷人而愉快的移动观看体验。
Gibbon渲染层、用于动态更新的JavaScript应用程序和原生软件开发工具包(SDK)组成了Netflix TV应用程序所基于的复杂架构。该应用程序通过使用React-Gibbon (React的自定义变体)保证了跨多个电视平台的流畅用户界面渲染和响应性。
优先考虑性能优化意味着关注每秒帧数和关键输入响应性等指标。通过减少道具迭代和内联组件创建等方法提高了渲染效率;通过样式优化和定制组件开发进一步优化了性能。Netflix一直致力于为多个平台的消费者提升电视应用体验,培养了一种卓越的表现文化。
在过去的十年里,Netflix彻底改变了人们观看和消费数字媒体的方式。但是,尽管这家流媒体巨头定期发布尖端功能,但自从2013年以来,播放界面的视觉设计和用户控制并没有太大变化。在意识到回放用户界面需要更新之后,网页用户界面(Web UI)团队开始重新设计。
该团队的三个主要用户界面是预播放(Pre Play)、视频播放(Video Playback)和播放后(Post Play)。他们的目标是提高客户的满意度和参与度。通过利用像React.js和Redux这样的技术来加快开发和提高性能,Netflix彻底改变了其播放用户界面。
Netflix的基础设施依赖于其内容交付网络(CDN),也被称为Netflix Open Connect,它允许内容轻松地交付给全球数以亿计的观众。全球分布的CDN对于确保不同地点的客户接收高质量的流媒体内容至关重要。
Netflix Open Connect的工作方式是,被称为Open Connect设备(OCA)的服务器被战略性地定位,以便它们靠近互联网服务提供商(ISP)及其用户。当内容交付达到高峰时,这种接近性可以减少网络延迟并保证有效的性能。Netflix能够最大限度地利用带宽,并通过在ISP网络中预先定位内容来减少对昂贵的骨干容量的依赖,从而提高整体流媒体体验。
可扩展性是Netflix CDN的主要特点之一。Netflix在全球约1000个地点安装了OCA,包括岛屿和亚马逊雨林等偏远地区,因此能够满足广泛地理区域对流媒体服务不断增长的需求。
此外,Netflix还向合格的ISP授予OCA,这样他们就可以直接从自己的网络中提供Netflix的内容。这一策略保证了用户流媒体的改善,同时也节省了ISP的运营费用。Netflix通过提供本地化内容分发,与ISP建立了双赢的关系,从而增强了流媒体生态系统。
通过实施微服务,Netflix改变了其视频处理管道,实现了无与伦比的可扩展性和灵活性,以满足工作室运营和会员流媒体的需求。随着从单片平台向基于微服务的平台的转变,进入了一个敏捷性和功能开发速度的新时代。
视频处理工作流的每个步骤都由一个单独的微服务表示,从而简化了编排和解耦功能。总之,这些服务(从视频检查到复杂性分析和编码)产生了适合工作室和流媒体用例的优秀视频资产。微服务通过促进快速迭代和适应不断变化的业务需求,产生了显著的结果。
采用Netflix的Open Connect的播放程序,全球客户可以享受完美的观看体验。其功能如下:
(1)运行状况报告:OCA定期向AWS云平台中的缓存控制服务报告学习的路由、内容可用性和总体运行状况。
(2)用户请求:通过托管在AWS上的Netflix应用程序,客户端设备上的用户请求播放电视节目或电影。
(3)授权和文件选择:在验证用户授权和许可之后,AWS播放应用程序服务选择处理播放请求所需的精确文件。
(4)指导服务:AWS指导服务根据缓存控制服务保存的数据选择从哪些OCA提供文件。回放应用程序服务在构建URL时从中接收这些OCA。
(5)内容分发:在客户端设备上,播放应用服务发送相关OCA的URL。当请求的文件通过HTTP/HTTPS发送到客户端设备时,所选的OCA开始为它们提供服务。
以下是演示回放过程的可视化表示:
Netflix经受住了2022年4月21日AWS云计算服务中断的考验,这证明了其云计算基础设施的价值,尤其是对亚马逊S3数据存储的依赖。Netflix的系统就是通过利用SimpleDB、S3和Cassandra等服务来承受这种中断事件的。
Netflix的基础设施是建立在使用Amazon S3(简单存储服务)进行媒体存储的基础上的,该服务为这家流媒体巨头的大量电影、电视剧和原创内容提供了动力。为全球的Netflix用户提供服务需要PB规模的数据,而Amazon S3是存储这些数据的完美选择,因为它提供了可扩展、可靠和高度可访问的存储服务。
导致Netflix选择Amazon S3作为媒体存储的另一个重要考虑因素是可扩展性。使用Amazon S3, Netflix可以轻松地扩展其存储容量,而不必担心随着内容集合的增长而添加更多硬件或维护复杂的存储基础设施。为了在不牺牲用户体验或速度的情况下满足对流媒体内容日益增长的需求,Netflix需要具备可扩展性。
在高度分布式的基础设施中对结构化存储访问的需求推动了Netflix的数据库选择过程。Netflix公司在意识到传统关系模型在互联网规模运营背景下的不足之后,采用了向NoSQL分布式数据库的范式转换。在他们的数据库生态系统中,有三个重要的NoSQL解决方案脱颖而出:Cassandra、Hadoop/HBase和SimpleDB。
(1)Amazon SimpleDB
随着Netflix将业务迁移到AWS云平台,Amazon SimpleDB显然成为许多用例解决方案。它的吸引力在于其强大的查询功能、跨可用性区域的自动复制和持久性。SimpleDB的托管解决方案降低了运营开销,这符合Netflix利用云计算提供商的服务进行非差异化运营的政策。
(2)Apache HBase
Apache HBase是为基于Hadoop的系统开发的一种实用、高性能的解决方案。它的动态分区策略使得重新分配负载和创建集群变得更加容易,这对于处理Netflix不断增长的数据量至关重要。Apache HBase强大的一致性架构通过对分布式计数器、范围查询和数据压缩的支持得到增强,这使得它适用于各种用例。
(3)Apache Cassandra
开源NoSQL数据库Apache Cassandra提供了性能、可扩展性和灵活性。其动态集群增长和水平可扩展性满足了Netflix对无限规模的需求。由于其可适应的一致性、复制机制和灵活的数据模型,Apache Cassandra非常适合跨区域部署和扩展,而不会出现单点故障。
由于每种NoSQL工具都适合于特定的用例集,因此Netflix采用了许多工具。Cassandra擅长跨区域部署和容错扩展,而HBase则自然地与Hadoop平台对接。学习曲线和运营费用伴随着Netflix长期云战略的支柱,即采用NoSQL,但在可扩展性、可用性和性能方面的好处使其投资物有所值。
作为向AWS云原生架构大规模迁移的一部分,Netflix的计费系统经历了一次重大转型。由于Netflix的运营严重依赖计费,因此向AWS的转移经过了谨慎处理,以确保对会员体验的影响尽可能小,并遵守严格的财务标准。
跟踪计费周期、监控支付状态以及向财务系统提供数据以进行报告,这些只是Netflix的计费基础设施所要处理的部分任务。计费工程团队管理了一个复杂的生态系统,其中包括批处理任务、API、与其他服务的连接器以及完成这些功能的数据管理。
数据库技术的选择是此次迁移中最重要的选择之一。由于需要可扩展性和支付处理中对ACID事务的要求,选择MySQL作为数据库解决方案。
为了适应新的云架构,构建健壮的工具、优化代码和删除不必要的数据都是迁移过程的一部分。在传输当前成员数据之前,使用干净的数据集进行了彻底的测试过程,使用代理和重定向器来处理流量重定向。
迁移到AWS云平台上的MySQL是一个复杂的过程;它需要仔细的计划,有条不紊的实施,以及持续的测试和迭代。尽管困难重重,但此举进展顺利,使Netflix得以将AWS云服务的可扩展性和可靠性用于其计费系统。
总之,将Netflix的计费系统切换到AWS上的MySQL涉及大量的工程工作和广泛的影响。Netflix的系统架构已经更新了其计费系统,并使用基于云的解决方案,为即将到来的数字领域发展做好准备。
以下是Netflix迁移后的架构:
Netflix内容处理管道是一种系统的方法,用于处理内容和实现合作伙伴提供的数字资产。三个主要阶段是摄取、转码和打包。
在摄取阶段,对音频、定时文本或视频等源文件的准确性和合规性进行彻底检查。这些验证包括语义信号域检查、文件格式验证、压缩比特流的可解码性、是否符合Netflix交付标准以及数据传输的完整性。
当源文件经过摄取阶段后,将进行转码以产生输出基本流。之后,这些流被加密并放置在准备分发的可流化容器中。
由于客户端应用程序是用户与品牌互动的主要方式,因此对于全球数字产品来说,它们必须具有卓越的质量。在Netflix的系统架构中,大量的资金用于保证对更新的应用程序版本进行彻底的评估。然而,进行彻底的内部测试变得很困难,因为Netflix可以在数千台设备上访问,并且由数百个独立部署的微服务提供支持。因此,在更新过程中获得可靠的现场数据来支持发布决策是至关重要的。
为了加快对更新的客户端应用程序的评估,Netflix的系统架构已经组建了一个专门的团队来挖掘来自该领域的健康信号。由于该系统的投资,提高了应用程序的质量和开发过程,从而提高了开发速度。
(1)客户端应用程序:Netflix升级其客户端应用程序有两种方式:通过直接下载和应用商店部署。直接下载增加了分发控制。
(2)部署策略:虽然客户端应用程序定期增量发布的优势是众所周知的,但更新软件存在一定的困难。由于每个用户的设备都以流的形式传输数据,因此高效的信号采样至关重要。Netflix采用的部署策略是定制的,以应对各种用户设备和复杂微服务带来的独特挑战。部署策略根据客户的类型而有所不同,例如智能电视和移动应用程序。新的客户端应用程序版本通过分阶段部署逐步可用,这提供了及时的故障处理和智能后端服务扩展。在部署期间,密切关注客户端错误率和采用率可以保证部署过程中的一致性和有效性。
(3)分阶段部署:为了降低风险并明智地扩展后端服务,分阶段部署需要逐步部署新的软件版本。
(4)AB测试/客户端金丝雀:Netflix采用了一种被称为“客户端金丝雀”的A/B测试的变体,它包括测试完整的应用程序,以确保在几个小时内及时升级。
(5)编制:编制减少了与频繁部署和分析相关的工作负载。这对于管理A/B测试和客户端很有用。
总之,由于Netflix使用了客户端金丝雀模式,客户可以享受完美的流媒体体验,这保证了应用程序的频繁更新。
Netflix系统架构是一个复杂的生态系统,由Python和Java组成,后端服务由Spring Boot提供,数据处理和实时事件流由Apache Kafka和Flink提供。前端的Redux、React.js和HTML5提供了更好的用户体验。许多数据库提供实时分析并处理大量媒体内容,包括Cassandra、HBase、SimpleDB、MySQL和Amazon S3。Jenkins和Spinnaker帮助持续集成和部署,AWS以可扩展性、可靠性和全球影响力为整个基础设施提供动力。
Netflix致力于为其全球广大观众提供完美的娱乐体验,这些技术只占其庞大技术堆栈的一小部分,这一事实证明了这一点。
十三、Netflix架构总结
Netflix系统架构已经彻底改变了娱乐行业。在从DVD租赁服务到主要的全球流媒体播放器的演变过程中,Netflix的技术基础设施对其成功至关重要。
由AWS云平台支持的Netflix架构保证了全球用户群不间断的流媒体传输。Netflix通过其客户端、后端和内容交付网络(CDN)确保跨设备无故障的内容交付。
Netflix系统架构对HTML5的创新使用和个性化建议,提升了用户体验。
尽管在这一过程中遇到了一些障碍,但Netflix在转向云原生设置后变得更加强大。在快速发展的在线娱乐领域,Netflix通过采用微服务、NoSQL数据库和基于云的解决方案,为未来的发展和创新做好了准备。任何科技企业都可以从了解Netflix的系统中受益。
简单地说,Netflix的系统架构旨在改变消费媒体的方式——这不仅仅是技术的问题。这种架构确保了当观众沉浸于观赏乐趣时一切都能正常运行,并提升每个人的娱乐体验。
原文标题:A Look Into Netflix System Architecture,作者:Rahul Shivalkar
本文链接:http://www.28at.com/showinfo-26-103363-0.html关于Netflix系统架构的研究
声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com
上一篇: WPF中轻松操控GIF动画:WpfAnimatedGif库详解
下一篇: 前端新入职必备清单,保姆级教程!