Netflix:单击播放时会发生什么?


本文是我的新书《 将云解释到十年的历史》中的一章。 第一个选项是专门为需要介绍云的用户编写的。 然后,我进行了一些更新,并添加了几章-“ Netflix:按开始键会发生什么?” 和“什么是云计算?” -已经超出了初学者的知识范围。 我认为,即使是经验丰富的人,他们也将对此感兴趣。

因此,如果您需要对云的一个很好的介绍或认识某个需要它的人,请看一下。 我想你会喜欢的。 我为自己所做的事感到自豪。

我根据许多资料撰写本章,有时彼此矛盾。 关键事实会随着时间而变化,并且取决于谁讲这个故事以及哪个听众。 我试图尽可能地使故事连贯。 请注意,这不是技术指南-本文是大图片。 例如,我什至从未提到过微服务

Netflix似乎很简单。 点击“播放”,视频将神奇地出现。 简单吧? 是的,不是真的。



在“什么是云计算?”一章中进行讨论之后。 您可能希望Netflix使用AWS来处理视频。 单击Netflix应用程序中的“播放”,存储在S3上的视频将通过Internet通过Internet直接流式传输到您的设备。

完美合理的方法-用于更小的服务。

但是Netflix是完全错误的。 一切都比您想象的要复杂和有趣。

要了解原因,让我们看一下Netflix 2017年的统计数据:

  • 超过1.1亿用户。
  • 在200多个国家/地区工作。
  • 每季度收入30亿美元。
  • 每季度增加500万订户。
  • 每周播放十亿小时以上的视频。 相比之下,YouTube每天播放10亿小时的视频,而Facebook每天播放1.1亿小时的视频。
  • 在2017年的一天,播放了2.5亿小时的视频。
  • 负责美国互联网高峰流量的37%。
  • 计划在2018年在新内容上花费70亿美元。

我们学到了什么?


Netflix非常庞大。 它是全球性的,拥有许多订阅者,播放大量视频,并且收入很高。

另一个相关事实是Netflix通过订阅工作。 订阅者每月向Netflix支付费用,并且可以随时取消订阅。 当您按“播放”以在Netflix下放松时,如果此服务正常运行会更好。 不满意的订户退订。

深入了解


Netflix是我们讨论的想法的一个很好的例子,因此本章比描述其他云服务要详细得多。 深入研究Netflix的原因之一是,它们提供的信息比其他公司多得多。 Netflix传播被认为是一项重要的文化资产,该公司成功地维持了其标准。

我什至要感谢Netflix对架构的开放性。 多年来,该公司进行了数百次讲座,并撰写了数百篇有关其内部工作模式细节的文章。 这有助于改善整个行业。

如此详细的细节的另一个原因是,Netflix服务简直令人赞叹。 我们大多数人都使用过它-谁对在幕后了解其工作原理不感兴趣?

Netflix在两个云中运行-AWS和Open Connect


公司如何满足客户需求? 借助云。 实际上,两个不同的云-AWS和Open Connect。 两者应毫无问题地共同工作,以制作出许多小时的视频内容,满足用户的需求。

Netflix的三个部分:客户端,后端,内容交付网络


您可以将Netflix分为三个部分:客户端,后端,内容交付网络(CDN)。

客户端-在用于查看和播放视频列表的任何设备上运行的用户界面。 它可以是智能手机上的移动应用程序,台式计算机上的网站,甚至是智能电视上的应用程序。 Netflix控制着每台设备上的每个客户端。

单击播放按钮之前发生的所有事情都发生在AWS上运行的后端中。 这包括准备所有新传入的视频以及处理来自所有应用程序,网站,电视和其他设备的请求。

单击“播放”后发生的所有事情都在Open Connect上处理。 这是Netflix自己的内容交付网络。 它在世界各地存储视频。 当您单击“播放”时,视频流从Open Connect发送到您的设备,并由客户端显示。 不用担心-我们稍后再讨论CDN。 有趣的是,该公司的视频发布过程不是被称为“点击”播放,而是在名称上“单击”开始。“每个行业都有自己的术语。

控制所有三个领域-客户端,后端,CDN-Netflix实现了完全垂直整合。 该公司控制您从头到尾观看视频的体验。 因此,仅当您在世界任何地方单击“播放”时,它才起作用。 您可以保证获得所需的内容,想要观看的内容以及所需的时间。

让我们看看结果如何。

Netflix在2008年开始迁移到AWS


Netflix自1998年开始运营。起初,它是通过邮件出租DVD的。 但是公司看到了点播视频的未来。 Netflix在2007年推出了视频点播服务,该服务使订户可以通过公司网站上的个人计算机或通过其支持的各种平台(包括智能手机和平板电脑,数字播放器和游戏)上的特殊软件,流式传输电视节目和电影。机顶盒和智能电视。

点播视频的未来似乎很明显。 原则上是这样。 就个人而言,我曾在多家初创公司工作,试图按需发行视频。 他们失败了。 Netflix在等待成功。 该公司确实运作良好,但是上市时间晚了,这对她有所帮助。 到2007年,互联网已经足够便宜和快速,可以支持流视频服务。 这从未发生过。 快速,不太昂贵的移动流量的出现以及功能强大的移动设备(例如智能手机和平板电脑)的出现,使得随时随地观看流式视频变得更加容易和便宜。 正确的时机是成功的关键。

Netflix开始拥有自己的数据中心


EC2始于2007年,与Netflix差不多同时启动。 因此,Netflix无法开始使用EC2。 该公司在附近建立了两个数据中心。 他们遇到了我们在前几章中讨论过的所有问题。

建立数据中心非常昂贵。 订购设备,安装和启动需要时间。 发射后,他们立即没电了,一切都必须重新开始。 在设备上花费的时间迫使该公司采取垂直扩展策略。

Netflix编写了在大型计算机上运行的大型程序。 这种方法称为整体构造。 一个程序可以完成所有工作。 问题是,如果您的增长速度与Netflix一样快,那么很难制作出可靠的整体影片。 他不可靠。

拒绝服务迫使Netflix迁移到AWS


在2008年8月,由于数据库故障,Netflix无法连续三天发送DVD。 那是不可接受的。 有必要解决一些问题。 建立数据中心的经验教会了公司重要的事情:建立数据中心的效果不佳。 她擅长向客户提供视频。 她需要专注于视频交付方面的改进,而不是建筑数据中心的改进。 数据中心的建设不是公司的竞争优势,而是数据传输的优势。

当时,Netflix决定迁移到AWS。 AWS才刚刚开始,因此这是一个大胆的决定。 该公司之所以选择AWS,是因为它需要更可靠的基础架构。 Netflix希望消除系统的所有弱点。 AWS提供了高度可靠的数据库,存储和冗余数据中心。 Netflix需要云服务来不再构建不可靠的整体。 Netflix希望在不建立数据中心的情况下成为全球性服务。 在过去的数据中心中,这种机会过去没有,也没有。

Netflix之所以选择AWS,是因为它不想从事无差别的工作。 要做无差别的艰苦工作,但这并不能给主要业务带来任何好处,主要业务是提供高质量的视频观看。 AWS为Netflix进行了所有这些艰苦的工作。 这使netflixers有机会专注于提供有价值的业务服务。

将公司从其数据中心迁移到AWS花费了八年多的时间。 Netflix在此期间增加了八倍的客户数量。 Netflix现在可以在数十万个EC2副本上运行。

AWS Netflix更可靠


并不是说Netflix从未遇到过AWS问题,但总的来说,其服务已经变得比以前更加可靠。 您将不再看到此类投诉:





该公司变得非常可靠,为此采取了非同寻常的步骤。 它在三个AWS地区运营:北弗吉尼亚州,俄勒冈州波特兰市和爱尔兰都柏林。 Netflix在每个区域中都在三个不同的访问区域中运行。

该公司没有计划增加工作区域的数量。 添加新区域非常困难且昂贵。 大多数公司仅在一个地区开展业务,更不用说两个或三个了。

在三个地区工作的优势在于,其中一个可能会倒下,而另外两个则会倒入原地并为受影响地区的客户提供服务。 Netflix称该地区疏散是秋天。

考虑一个例子。 假设您正在观看英国伦敦的新一集的“纸牌屋”。 您的设备最有可能已连接到都柏林地区。 都柏林地区沦陷时会发生什么? Netflix将停止为您服务吗? 不行 一旦发现问题,Netflix就会将您重定向到弗吉尼亚。 您的设备将与维珍地区而非都柏林进行通信。 您甚至可能没有注意到失败。

AWS区域多久发生一次故障? 每月一次。 好吧,实际上该地区并不是每个月都失败。 Netflix每月进行测试。 Netflix每月都会专门删除整个区域,以确保其系统能够处理区域故障。 您可以在六分钟内撤离该地区。

Netflix将其称为全球服务模型。 可以从任何区域为每个客户提供服务。 太神奇了 而且这不会自动发生。 AWS没有魔力来应对区域故障或为来自不同区域的客户提供服务。 Netflix本身完成了这项工作。 该公司是在多个地区创建可靠系统的先驱。 我不知道其他公司会采取这种措施来确保这种服务的可靠性。

在这三个地区开展业务的另一个优势是,Netflix可以覆盖整个世界。 Netflix进行了检查,发现通过在世界任何地方启动该应用程序,无论如何,您将获得来自这些地区之一的快速服务。

Netflix使用AWS节省成本


这可能会让许多人感到惊讶,但是适用于Netflix的AWS便宜。 在观看视频方面,云的成本比使用旧数据中心的成本低好几倍。 怎么了 由于云的弹性。

Netflix可以根据需要添加服务器,并在不需要时将其返回。 该公司没有一堆额外的计算机无所事事,只是在等待峰值负载,而是在需要时使用所需数量的计算机。

单击播放之前在AWS上会发生什么?


与视频存档无关的所有内容均在AWS上处理。 这包括可扩展的计算能力,可扩展的存储,业务逻辑,可扩展的分布式数据库,大数据处理和分析,建议,代码转换以及数百种其他功能。 您不需要全部理解它们,但是由于这对您来说似乎很有趣,因此我将简要解释它们。

可扩展的计算能力和存储


可扩展的计算能力为EC2,存储为S3。 这里没有什么新鲜的东西给我们。 您的设备是iPhone,电视,Xbox,Android智能手机,平板电脑等。 -与在EC2中运行的服务进行通信。 您的设备通过与运行EC2的计算机联系来接收可能观看的电影列表。 有关您的设备在那里收到的视频的详细信息。 一切工作都与其他云服务相同。

可扩展的分布式数据库


Netflix使用DynamoDB和Cassandra作为分布式数据库。 这些名称对您没有任何意义-它们只是高质量的数据库。 数据存储在数据库中。 您的个人资料,帐户,所有已观看电影的信息-所有这些信息都存储在数据库中。 分布式数据库不能在一台大型计算机上运行,​​而可以在许多计算机上运行。 您的数据将被复制到多台计算机上,因此即使一两个存储数据的计算机出现故障,您的数据也将是安全的。 实际上,所有数据都在所有三个区域中复制。 因此,如果区域发生故障,您的数据将在您将切换到的另一个区域中可用。 伸缩意味着数据库将能够存储您添加到其中的数据。 这是分布式数据库的主要优点之一。 如果有更多数据到达,则可以添加更多计算机。

大数据处理与分析


大数据只是很多数据。 Netflix收集了大量信息。 该公司知道谁在何时何地观看。 该公司知道客户观看了哪些视频,但没有订购。 她知道每个视频观看了多少次,而且还有更多。

收集所有数据并将其转换为标准格式称为处理。 并从中提取含义-分析。 分析数据以获得特定问题的答案。

Netflix专门为您个性化图片


这是Netflix如何利用数据分析功能吸引您观看更多电影的一个很好的例子。 当您浏览列表并选择要看的内容时,您是否注意到为每部电影发行一张图片的事实? 这是标题图像。

标题图片应该引起您的兴趣,引起您的注意,并让您选择此视频。 这个想法是,图像越吸引人,您观看视频的可能性就越大。 而且,您观看的视频越多,您退订Netflix的可能性就越小。

这是“陌生事物”系列的各种标题图像的示例:



您可能会惊讶于为每个视频专门选择了每个视频的每个图像。 并非所有人都能看到相同的图像。

以前,每个人都看到相同的标题图片。 这是它的工作方式。 向客户显示了从一组图像中随机选择的一张图像,如上图所示。 Netflix计算所有视频观看次数,并记录选择视频后向用户显示的图像。 对于本系列的示例,假设显示拼贴中的中央图片时,该视频被观看了1000次。 当显示其余图片时-仅一次。

由于组图像比其他图像更能吸引用户观看,因此Netflix必须永远使其成为该系列的标题图像。 这称为基于数据的选择。 Netflix基于数据分析进行工作。 在这种情况下,将收集数据(在这种情况下为与每个图片关联的视图数),并用于做出最佳决策,以选择标题图片。

狡猾,但这可以做得更好吗? 是的,使用更多数据。 对于此主题,未来在于通过从数据中学习来解决问题。 我们是不同的人。 您是否认为相同的图像可以激励我们? 可能不是。 我们有不同的口味,不同的喜好。 Netflix知道这一点-因此,现在它可以个性化显示给您的所有图像。 她正在尝试选择一张图片,以突出显示视频中最重要的部分。 她是怎么做到的?

请记住,Netflix记录并统计您在其网站上所做的一切。 她知道您喜欢哪些电影,您喜欢哪些演员等等。 假设您的建议中包括电影《善意狩猎》。 Netflix应该选择合适的标题图片。 目的是要显示一张图片,告诉您这部电影可能会让您感兴趣。 您需要显示什么图片?

如果您喜欢喜剧,Netflix将为您展示Robin Robins的图像。如果您喜欢情节剧,Netflix将为您显示马特·达蒙(Matt Damon)和米妮·德米妮(Minnie Driver)即将亲吻的图像。



该服务以罗宾·威廉姆斯(Robin Williams)为特色,告诉您这部电影可能很幽默,而且由于Netflix知道您喜欢喜剧,因此该视频非常适合您。图片Matt Damon和Minnie Driver发送的消息完全不同。如果您喜欢喜剧并看到这张照片,您很可能会错过它。因此,选择正确的图像非常重要。它发出强烈的个性化信息,讲述了电影的主题。

这是另一个示例-低俗小说:



如果您和Uma Thurman一起看了很多电影,那么您很可能会看到Uma的标题图像。如果您与Travolta一起看过许多电影,那么您可能会与John一起看到标题图像。看看如何选择最佳的个性化图像如何增加观看特定视频的可能性?

Netflix在选择图像时会吸引您的兴趣,但该服务并不想骗您。他不想只给您看一些吸引人的图像,让您观看自己不喜欢的视频。没有动力。该服务不收取观看次数。该服务试图最大程度地减少后悔,并希望您喜欢自己正在观看的内容,因此它为您选择了可能的最佳标题图片。这只是数据分析的一个小例子。 Netflix到处都采用这种策略。

推荐建议


Netflix通常会向您显示40-50个视频选择,但是该服务提供了成千上万个视频。Netflix如何决定显示什么?通过机器学习。

这是我们刚才谈到的大数据处理和分析的一部分。该服务将检查数据并预测您可能想要的内容。通常,您在Netflix屏幕上看到的所有内容都是使用机器学习专门为您选择的。

从源文件转码成您需要的格式


因此,我们了解了Netflix处理视频的方式。Netflix必须先将视频转换为最适合您设备的格式,然后才能开始在您喜欢的设备上观看。此过程称为代码转换。它将视频文件从一种格式转换为另一种格式,以便可以在不同的平台和设备上观看视频。Netflix可以同时在300,000个处理器上的AWS上对所有视频进行编码。这比几乎任何超级计算机都多!

源数据源


谁将视频上传到Netflix?制片厂和制作协会。Netflix将其称为原始数据。新视频将发送到内容团队进行处理。它具有高分辨率,大小为数TB。要想象一个TB的信息,请想象60个纸柱,每个柱子的高度都等于艾菲尔铁塔的高度。

在观看视频之前,Netflix会对其进行严格的多步处理。



质量检查


首先,Netflix花费大量时间检查视频质量。她正在寻找数字伪像,颜色变化,掉落的帧,这些帧可能是由于先前的转码尝试或数据传输问题而出现的。如果检测到任何问题,视频将被拒绝。

加工输送机


确认视频质量后,将其发送到处理管道。这是数据使用之前需要经过的一系列步骤-类似于工厂中的传送带。超过70种不同的处理程序用于创建每个视频。

处理单个数TB的文件是不切实际的,因此,管道的第一步是将视频分割成许多小片段。碎片沿着传送带通过,因此可以并行编码-即,它们被同时处理。

我们用一个例子展示并行化。



假设您有一百只脏狗需要清洗。如果一个人一个接一个地洗狗,或者您雇了一百个洗狗器同时洗一次,怎么会更快呢?

显然,如果同时运行一百台洗衣机,该过程将更快。这是并行性。这就是Netflix使用这么多EC2服务器的原因。他们需要许多服务器来并行处理这些巨大的视频文件。而且行之有效-该公司声称可以对源文件进行编码,并在30分钟内将其发送到CDN。

对片段进行编码后,将对其进行检查以确保它们没有新问题。然后将它们再次收集到一个文件中并再次检查。

结果是一堆文件


编码过程会创建许多文件。 怎么了Netflix的最终目标是支持连接到Internet的每台设备。该公司于2007年开始在Microsoft Windows平台上运营。随着时间的流逝,添加了许多其他设备-Roku,LG,三星蓝光,Apple Mac,Xbox 360,LG DTV,Sony PS3,Nintendo Wii,Apple iPad,Apple iPhone,Apple TV,Android,Kindle Fire和Comcast X1。

Netflix总共支持2,200种不同的设备。对于他们每个人来说,都有一种看起来最好的视频格式。如果您在iPhone上观看Netflix,将会看到在iPhone上观看效果最佳的视频。该公司将所有各种视频格式称为编码配置文件。 Netflix还创建针对不同网络速度优化的文件。如果您在高速网络上观看文件,则观看的视频质量比在慢速网络上观看的视频要好。

也有各种音频格式的文件。音频以不同的质量级别和不同的语言编码。此外,还有带字幕的文件。一个视频可以有多个不同语言的字幕。每个视频有几种不同的观看选项。您看到的内容取决于设备,连接质量,服务资费和语言选择。

那么那里有多少个文件?


对于该系列,The Crown Netflix存储约1200个文件。《陌生人事物》第二季的档案更多。它以8K分辨率拍摄,共有9集。源文件占用大量TB的数据。仅编码一个季节就花费了190,000个处理器小时。结果是9,570个不同的视频,音频和文本文件。

现在,让我们看看Netflix如何播放所有这些文件。

流视频的三种不同策略


Netflix具有三种不同的播放流视频的策略-它自己的小型CDN,第三方CDN和Open Connect。让我们从CDN的定义开始。CDN是内容分发网络。对于Netflix,内容当然是我们在上一节中讨论的视频文件。共享意味着将文件从网络的中央位置复制并存储在分布在世界各地的计算机上。在Netflix,文件的中央存储位置是S3。

为什么要创建CDN?


这个想法很简单:您需要将视频尽可能地靠近用户放置,在世界各地分发计算机。当用户想要观看视频时,找到离他最近的计算机,并组织从那里到他设备的流。 CDN的最大好处是速度和可靠性。

想象一下,您正在伦敦观看一个视频,该视频是从俄勒冈州波特兰传输给您的。视频流需要通过许多网络,包括海底电缆,因此连接速度可能很慢且不可靠。通过将视频移近观看者,您可以使观看视频的快感变得最快,最可靠。

存储视频的计算机的每个位置都称为存在点(PoP)。每个PoP都是可以访问Internet的物理位置。有服务器,路由器和其他电信设备。稍后我们将讨论PoP。

第一个CDN太小


Netflix在2007年首次推出流媒体服务时,在50个国家/地区拥有3600万用户,每月观看超过10亿小时的视频,并且每秒接收几兆兆字节的数据。为了支持该服务,Netflix已在美国的五个不同地点构建了自己的简单CDN。该公司的视频目录非常小,所有文件都存储在所有位置。

第二个CDN太大


在2009年,Netflix决定使用第三方CDN。那时,CDN的成本开始下降。使用第三方网络是Netflix的明智之举。如果您可以立即使用现有的CDN到达地球上的任何地方,为什么还要浪费时间和精力来建立网络?

Netflix一直致力于为Akamai,Limelight和Level 3等公司提供CDN服务。使用第三方CDN没错。实际上,几乎所有公司都这样做。例如,NFL使用Akamai的服务现场直播美式足球比赛。 Netflix没有创建自己的CDN,就腾出了时间来处理其他优先项目。

该公司花费了大量时间和精力开发更智能的客户。 Netflix创建了适应不断变化的网络条件的算法。即使出现错误,网络或服务器过载,该公司也希望用户拥有最佳的画​​面。该公司开发的一项技术-切换到另一个视频源-例如切换到另一个CDN或另一个服务器-以获得最佳效果。

同时,Netflix花费了大量的精力来支持我们前面提到的所有AWS服务。 Netflix将AWS服务称为参考平面。控制平面是控制其他所有系统的系统部分的网络术语。在您的身体中,大脑是控制平面-它控制着其他一切。

然后Netflix决定他们可以通过开发自己的CDN来改善服务。

开放式连接非常完美


Netflix在2011年意识到,就其规模而言,他们需要专用的CDN解决方案以最大化网络效率。视频分发是公司的核心竞争力,并且可以是巨大的竞争优势。因此,Netflix开始开发自己的特殊CDN Open Connect。它始于2012年。Open Connect具有许多优点:

  • 她不是那么贵。第三方CDN更昂贵。自己做意味着节省很多钱。
  • 更好的质量。Netflix认为,通过控制视频的整个路径(代码转换,CDN,客户端,设备),它可以提供出色的服务质量。
  • . . , .

第三方CDN应该支持需要从世界任何地方访问任何内容的用户。Netflix的任务要简单得多。

Netflix在注册时肯定会了解其用户。她知道要传输哪些视频。仅仅因为您只需要传输大型视频流,就可以采取许多措施来智能地优化其他CDN无法做到的网络。Netflix还对其客户了解很多。该公司知道他们喜欢哪些视频以及何时观看。

有了这些知识,Netflix就构建了高速CDN。让我们仔细看一下Open Connect的工作原理。

打开连接设备


还记得我们讨论过CDN计算机分布在世界各地的情况吗? Netflix已经开发了自己的视频存储计算机系统。 Netflix将其称为Open Connect设备(Open Connect设备,OCA)。 以下是早期OCA安装之一:



在照片中-一次有多个OCA。 OCA被分组在几个服务器的群集中。 每个OCA都是针对大型文件输出进行优化的快速服务器,其中许多硬盘或闪存驱动器都存储视频。 以下是其中一台OCA服务器的外观:



出于不同的目的,有几种不同类型的OCA。 有大型的OCA,能够存储公司的整个视频目录。 有些小型OSA只能存储部分视频目录。 在主动缓存期间的高峰时段,每天都会在小型OCA中填充视频文件。

在设备方面,OSA没有什么突出的。 它们基于常规的PC组件,并且各种供应商将它们组装成各种包装。 您可以根据需要购买相同的计算机。 请注意,所有Netflix计算机均为红色。 该公司专门订购它们,以使其与徽标的颜色匹配。

在软件方面,OSA使用FreeBSD OS和nginx作为Web服务器。 是的,每个OSA都是Web服务器。 视频流使用nginx。 如果这些名称不告诉您任何内容-不要气,,我仅将其包括在内是为了使图片更完整。

本地OSA的数量取决于Netflix希望在特定位置实现的可靠性,其服务的流量以及该中心可以作为流发送的流量百分比。 单击“播放”时,您会观看来自特定OSA的视频流,例如您附近的OSA。

为了获得最佳的观看体验,Netflix希望将视频缓存在您的家中。 但是现在,这是不切实际的。 下一个最方便的选择是在您家附近放置一个迷你Netflix。 怎么办呢?

Netflix在哪里托管OCA?


Netflix从位于全球1000多个数据中心的数千台服务器分发大量视频。 看一下此视频服务器位置图:



其他视频服务,例如YouTube和Amazon,都通过自己的网络提供视频。 这些公司实际上已经建立了自己的全球网络来向用户提供视频。 这是非常复杂和昂贵的。 Netflix采用了完全不同的方法来构建CDN。

Netflix无法在其网络上运行,也无法在自己的数据中心内运行。 相反,Internet服务提供商(ISP)同意托管OCA。 Netflix为提供商免费提供了将其服务器集成到其网络中的服务,此外,它还使OSA靠近流量交换点 (互联网交换位置,IXP)。

这种策略使Netflix不必建立自己的数据中心,但是该公司获得了在这样一个中心的所有优势-它只是属于其他人。 精巧! 让我们将最后几段分成更简单的步骤。

使用ISP创建CDN


ISP是您的互联网服务提供商。 这是为您提供Internet即服务的人。 它可以是Verizon,Comcast,Beeline或其他数千种之一。 最主要的是ISP位于世界各地,并且靠近客户。 通过将OCA托管在ISP数据中心中,Netflix也分布在世界各地且与客户接近。

使用IXP创建CDN


流量交换点是数据中心,ISP和CDN在其中交换网络之间的流量。 就像参加聚会与朋友交流圣诞节礼物一样。 如果每个人都聚集在一个地方,则共享会更容易。

IXP遍布全球:



这是IXP在伦敦的样子:



如果您使用这些黄色的光缆,则将看到以下内容(基于阿姆斯特丹的AMS-IX交换点):



每条电缆将一个网络连接到另一个网络。 这就是不同的网络相互交换流量的方式。 IXP就像高速公路的立交桥,只有电线:



对于Netflix,这是另一个优势。 IXP位于世界各地。 通过将OSA放置在IXP中,公司可能不再拥有自己的数据中心。

视频主动缓存在OSA上


Netflix在S3中有很多视频。 视频传输计算机遍布世界各地。 仅缺少一件事:视频本身! Netflix使用称为主动缓存的过程将视频有效地复制到OCA。



什么是缓存 缓存-缓存]? 这是一个通常位于土地上秘密存储暗盒,食物和宝藏的地方。 你知道松鼠冬天藏坚果吗? 松鼠藏坚果的每个地方都是一个缓存。 在冬天,任何松鼠都能找到许多坚果并咀嚼它们。 北极探险家派遣小队前进,沿着他们的前进路线储存食物,燃料和其他物资。 后面有一个较大的团队在每个缓存处停止并还原。 蛋白质和北极研究人员均积极工作。 他们正在做一些事为未来做准备。

每个OCA都是您最想观看的视频的视频缓存。 Netflix缓存视频,预测您想要观看的内容。 在全世界,Netflix非常确定地知道其客户喜欢观看。 还记得我们说过Netflix是一家数据驱动公司吗? 她使用受欢迎程度数据来预测客户明天可能在任何地方观看哪些视频。 这里所说的是指位于ISP或IXP上的OSA群集。 该公司将预测的视频复制到每个地方的一个或多个OCA中。 这称为初步布局。 该视频在任何人要求之前都托管在OSA上。 因此,客户将获得优质的服务。 他们想要观看的视频已经接近他们,并且可以观看。



Netflix与所谓的 链接的缓存。 小型OCA由ISP或IXP托管。 它们太小,无法容纳整个视频目录。 在其他地方,有些OSA几乎具有整个Netflix视频目录。 在其他地方,OSA包含整个Netflix目录的地方。 他们从S3获取视频。

每天晚上,OSA醒来并轮询AWS服务以获取他需要哪种视频。 该服务会根据预测将他应该拥有的视频列表发送给他。 每个OCA负责将所有视频都包含在此列表中。 如果某个地方的OCA之一具有必要的视频之一,则缓存的OCA将从他那里复制此视频。 否则,将发现视频并从不远处的某些OSA中获取。

由于Netflix预测它将在明天流行,因此在OSA上需要视频之前总是有障碍的一天。 这意味着可以在安静的时间内在峰值负载之外复制视频,从而大大减少了ISP带宽的使用。

Open Connect永远不会丢失缓存。 错过是指从OSA请求特定视频时,他回答说他没有该视频。 其他CDN上会发生未命中,因为它们负担不起将所有内容复制到任何地方。 由于Netflix知道所有需要缓存的视频,因此它确切知道在什么位置以及在什么位置。 如果小型OSA没有所需的视频,则可以由主要OSA之一来保证。

为何Netflix不只是将其所有视频复制到世界上所有的OCA? 她的视频目录太大了。 2013年,目录量超过3 PB; 我不知道他今天是什么,我只能假设更多。 这就是为什么该公司开发了一种方法,该方法使用预测订户想要观看的数据来选择需要存储在每个OSA上的视频文件。

举个例子。 《纸牌屋》是一个非常受欢迎的节目。 应该将其复制到哪个OSA? 来自世界各地的订户很可能希望在任何地方观看它。 但是,如果视频不如《纸牌屋》那么受欢迎,该怎么办? Netflix决定应将副本存储在哪个位置,以最好地满足所有直接客户的需求。

在一处,最受欢迎的视频被复制到许多OSA。 视频越受欢迎,将有更多的服务器存储该视频的副本。 怎么了 如果非常受欢迎的视频只有一个副本,那么流向所有客户端的视频流将使服务器超载。

如果仅将视频复制到一个OSA,则该视频不被视为准备分发。 Netflix希望能够在世界各地同时播放相同的内容。 仅当有足够数量的OSA和足够数量的视频副本以提供正确的质量时,才认为该视频已准备就绪供观看。

例如,2016年《夜魔侠》节目的第二季是Netflix首次在所有国家/地区的所有设备上同时发布该系列的所有剧集。

OSA放置:提供商为何需要此服务?


供应商为什么同意托管OSA集群? 乍一看,这太慷慨了-但您会发现个人利益确实涉及其中,这将使您很感兴趣。 为了理解这一点,我们需要讨论网络是如何工作的。 在本书中,我们讨论了通过互联网访问云服务。 对于Netflix,情况并非如此-当通过Netflix应用程序观看视频时,它会通过Internet与AWS进行通信。 [尚不清楚作者在脑子里有什么区别//大约。 perev。]

互联网是网络的互连。 您有提供Internet访问的提供商。 我从康卡斯特获得了互联网服务。 这意味着我的家通过光纤连接到了Comcast网络。 Comcast网络属于它们-这不是Internet,Internet是其他东西。

假设我想在Google上进行搜索,然后在浏览器中输入请求,然后按Enter。 我的请求首先通过Comcast网络进行。 Google不在Comcast网络上。 在某些时候,我的请求应该转到Google联网。 为此,有互联网。 互联网将Comcast网络连接到Google网络。 存在以街道交通控制器和直接网络交通的方式工作的路由协议。 当我的请求发送到Internet时,它位于Comcast网络外部和Google网络外部。 它位于Internet骨干网中 。 互联网由许多决定相互交互的专用网络连接。 IXP是网络相互通信的方式之一。

在美国,有一张遥远的光纤网络图:



Netflix通过其Open Connect进行了以下操作:它在ISP网络中托管OSA群集。 这意味着,如果我观看Netflix视频,则是与位于Comcast网络上的OSA交谈。 我所有的视频流量都通过他们的网络,并且不在线。

扩展视频传输的关键是尽可能靠近用户。 执行此操作时,您没有使用Internet主干。 在网络的本地部分中满足请求。 为什么这么好? 请记住,我们说过Netflix已经消耗了美国37%以上的互联网流量。 如果ISP不与该公司合作,它将使用更多的Internet。 互联网无法处理所有流量。 提供商将需要增加更多的容量,这是非常昂贵的。

现在,几乎100%的Netflix内容都是在提供商网络内传输的。 因为它不会阻塞Internet,所以减少了网络维护的成本。 同时,Netflix订户收到高质量的视频,并且每个人的网络性能都得到改善。 每个人都赢。

开放式连接可靠且具有弹性


我们已经讨论了Netflix如何通过在三个AWS区域工作来提高系统可靠性。 Open Connect体系结构可以达到相同的目标。 这可能并不明显,但是OCA彼此独立。 OCA充当独立的视频传递群岛。 从一个OSA接收视频的订户不会遭受其他OSA的故障。

OSA发生故障时会发生什么? 您正在使用的客户端程序立即切换到另一个OSA并继续显示。 如果太多人在一处使用OCA,会发生什么情况? 客户端程序找到较少加载的OSA。 如果用于传输视频的网络过载,会发生什么? 同样的事情-该程序在网络上找到另一个运行更好的OSA。 Open Connect是一个非常可靠且容错的系统。

Netflix控制客户端


Netflix巧妙地处理故障,因为它控制着所有设备上的客户端。 该公司本身开发了适用于Android和iOS的应用程序,因此我们可以预期它会控制它们。 但是,即使在诸如Smart TV之类的平台上,Netflix也没有创建客户端,它仍然可以控制它,因为它可以控制应用程序开发包(SDK)。

SDK是一组开发程序,可让您创建应用程序。 每个Netflix应用程序都使用SDK发出AWS请求并播放视频。 通过控制SDK,Netflix可以持续实时地适应慢速网络,失败的OSA和其他可能的问题。

最后:这是您单击“播放”时发生的情况

我们在这方面走了很长一段路,并且学到了很多东西。 这是我们目前所知道的:

  • Netflix可以分为三个部分:后端,客户端和CDN。
  • 所有客户请求均由AWS处理。
  • 所有视频都从最近的Open Connect(OCA)设备传输到CDN。
  • Netflix在三个AWS区域工作,通常可以应对任何区域的故障,因此没人会注意到。
  • 新内容在公司中转换为许多不同的格式,因此您可以根据设备的类型,网络质量,地理位置和订户速率来选择最合适的选项。
  • 该公司每天都在Open Connect上向世界各地分发视频,而无需预测订户想要在世界各地观看的视频。

这是Netflix在播放过程中描述的图片:



让我们完成它:

  • 您选择要使用在某些设备上运行的客户端观看的视频。 客户端会向基于AWS的Playback Apps服务发送播放请求,指示您需要哪个视频。
  • 我们之前没有讨论过,但是单击“播放”时发生的大多数情况与许可有关。 并非全世界的每个地方都有观看每个视频的许可。 Netflix应该确定您是否具有观看特定视频的许可。 我们不会讨论这个无聊的主题,但是请记住,这种情况一直存在。 Netflix开始创建自己的内容的原因之一是试图避免许可问题[并且仍然存在荒谬的情况 ,该公司无法展示Netflix的制作系列,因为它将其版权出售给了本地内容提供商-更不用说了禁止在美国公司工作的所有地区//大约。 翻译]。 Netflix希望同时为全球所有人发布节目。 创建自己的内容是避免许可问题的最简单方法。
  • 有了所有相关信息,Playback Apps服务会将URL返回到几台(最多十台)OSA服务器。 这些是您在浏览器中看到的相同URL。 Netflix使用您的IP地址和提供商提供的信息来确定最适合您的OSA群集。
  • 客户分析情况并选择OCA。 他检查与每个连接的质量。 它将连接到最快,最可靠的OSA。 客户端在视频播放期间不断进行这些检查。
  • 客户端正在尝试选择从OSA接收内容的最佳方式。
  • 客户端连接到OSA,并开始在设备上输出视频流。
  • 观看视频时,您是否注意到图像质量在变化? 有时会有像素,过了一段时间图像又恢复到高质量了吗? 这是因为客户端适应网络的质量。 如果质量下降,则客户端会相应降低视频质量。 如果质量下降太多,客户端将切换到另一个OSA。

这是在Netflix上单击“播放”时发生的情况。 谁会想到像观看视频这样的简单事情会如此复杂?

Source: https://habr.com/ru/post/zh-CN409583/


All Articles