17611538698
webmaster@21cto.com

Netflix 架构设计“揭密”:内容生产、处理与分发设计

架构 0 1395 2022-11-02 11:25:24
图片
导读:在注意力游戏的争夺战中,内容是一把双刃剑,而用户体验是引领内容上战场之战马。


当今流媒体大战如火如荼,Netflix (奈飞)仍然保持主导之地位,它目前拥有超过 50,000 种个人作品。


根据Netflix2022年第三季度财报显示,其营收实现79.26亿美元,同比增长5.9%,高于市场预期的78.5亿美元;净利润为13.98亿美元,同比下滑3.5%,高于市场预期;全球净增用户241万人,同样高于市场预期。财报发布后,10月19日,Netflix美股盘前大涨13%。


此外,Netflix 在 180 多个国家拥有 2 亿以上订阅者,更令人印象深刻的是推动这种增长的基础技术。

在本系列中,我的目标是超越 Netflix 运营的表面,深入挖掘大规模交付内容所涉及的端到端流程的技术细节。

在本系列的第一个文章中,我专注于 Netflix 如何将内容载入系统并打开连接。

下图显示了我将在本文中描述的系统架构概述。

图片

内容、内容、内容!


Netflix 拥有超过 50,000 个标题的电影组合库,同时支持超过 2200 台设备播放,每台设备都有其个性化的分辨率与网络速度。为了能够以不同的网络速度为这么多设备提供服务,Netflix 拥有不同格式的原始视频。

Netflix 以最佳格式从制作公司处接收视频。但问题是制作公司的视频很大,非常大。对于蓝光制式的 2 小时电影,需要占用 15-25Gb 。以这种格式直接提供给用户会消耗大量数据和带宽。为此 Netflix 会对原始视频执行一系列预处理,以将它们转换为不同的文件格式,这些预处理称之为编码或转码。

编码是压缩视频和音频文件,并与单个目标设备兼容的过程。另一方面,转码将已经编码的数据转换为另一种编码格式(如MP4、WLM、MOV、MPEG-4)。当用户使用多种设备(例如不同的手机、Pad与网络)时,此过程就变得特别有用。另外浏览器并不都支持同样的格式或者存储容量有限。

这种预处理技术的原理比较简单,列举如下:

  • 减小文件大小
  • 减少流式视频的缓冲
  • 更改分辨率或纵横比
  • 更改音频格式或质量
  • 将过时的文件转换为现代格式。
  • 制作与特定设备(计算机、平板电脑、智能手机、智能电视、旧设备)兼容的视频。
  • 制作与某些软件或服务兼容的视频。


一个实际的例子,要压缩 25Gb 的电影需要很长时间才能完成。Netflix 会将原始视频分成不同的更小的块,然后在 AWS EC2 中使用并行工作器,对这些视频块执行编码和转码,再将它们转换为不同分辨率(4k、1080p 等)的不同格式(MP4、MOV 等)。

Netflix 还创建了同一视频块的多个副本,以适应不同的网络速度。一个视频块大约有 1300 个副本。

例如:

  • -高质量 ------4K,1080p,720p,360p

  • -中等质量 ------4K,1080p,720p,360p

  • -低质量 ------4K,1080p,720p,360p

Netflix 会将处理过的视频数据存储在 Amazon S3 上。这是一个高度可扩展且可用的存储平台,用于存储静态数据。每个视频文件都存储在AWS场景块中

Netflix 使用 AWS 来满足其几乎所有的计算与存储需求,包括数据库、分析、推荐引擎、视频转码等——数百种功能在 AWS 上总共使用了超过 100,000 个服务器实例。

参考地址:https://aws.amazon.com/solutions/case-studies/netflix

默认情况下,大多数块是 10 秒的视频。每次跳到电影的不同部分时,用户都在查询 Netflix 的 Playback API 以获取不同的视频块。

在用户侧/客户端通常有一个块正在播放,一个块在当前块完成后准备播放,还有一个块准备下载。

这样做就是为了向用户提供无缝的观看体验,并在那时最大限度地提高下载速度。此外,这些块到达的速度决定了后续块的比特率(比特率是指每秒使用的比特数)。 如果第一个块的播放时间长于块的播放持续时间,它会抓取下一个较低比特率的块。如果它到达得更快,如果可用,它将选择更高分辨率的块。

这就是为什么有时候,我们在观看视频时,它的分辨率开始可能会出现颗粒感,然后会不断调整到更好清晰度的原因。


图片

Netflix 目前已经在 200 多个国家/地区拥有大量的用户/会员。
比如,尼日利亚的用户想观看在美国托管的AWS实例上的电影,将通过ISP提供商将前往美国访问那些服务器,这里需要一定时间和带宽延迟。而如今,服务内容的延迟就可能导致收入下降的时代,用户快速访问内容是至关重要的。
Netflix 通过在 ISP 和称为Open Connect 的 IXP(互联网交换节点)内创建小型服务器来解决了这个问题。
这些小型服务器能够存储 280 TB 的数据。Netflix 在 Amazon S3 上对视频进行压缩和转码后,它会在非高峰期(比如说凌晨 4 点)传输到这些Open Connect IXP的盒子(小型服务器)中。当用户请求视频,不再直接访问美国的 Netflix 服务器,它访问击中的是Open Connect IXP 盒子的内容。
这样一来,既确保减少了带宽、更快的播放时间以及更好的用户体验。
另外,Netflix 的电影也根据地区进行了本地化。
现实情况举例,Netflix 在尼日利亚和巴西的Open Connect IXP 设备上都存储不同的电影——大约 90% 的 Netflix 内容都是以这种方式提供的。
Open Connect

CDN 是一组地理分布式的服务,它们之间协同工作用来提供互联网内容的快速交付。而Open Connect 是 Netflix 的自定义全球内容交付网络 (CDN)。

播放视频后发生的所有事情都由 Open Connect 处理。

  • Open Connect 将 Netflix 视频存储在世界各地的不同区域。当用户按下播放按钮,Open Connect 将本区域内的视频流推送到设备中并播放。
  • Netflix 与世界各地的互联网服务提供商 (ISP) 和互联网交换点 (IX 或 IXP) 合作,在Netflix 网络中部署称为Open Connect Appliances (OCA) 的专用设备。
    图片
    Netflix的 Open Connect 设计
  • 这些服务器会定期向 AWS 上的 Open Connect Control Plane 服务报告它们从 IXP/ISP 网络获得的健康指标、最佳线路以及它们在 SSD 磁盘上存储的视频状况。
  • 当新的视频文件成功转码并存储在 AWS S3 上时,AWS 上的Open Connect Control Plane 服务会将这些文件传输到 IXP 站点上的 OCA 服务器。这些 OCA 服务器将应用缓存更新,并将这些文件传输到其子网络下 ISP 站点上的 OCA 服务器中。
  • 当 OCA 服务器成功存储视频文件后,如果有需要,它能够启动对等复制以将这些文件拷贝到同一站点内的其它 OCA 服务器。
  • 可以看到彼此 IP 地址的 2 个不同站点之间,OCA 可以应用层复制而不是常规缓存填充。
    图片
    Open Connect 从Netflix传输内容

小结

根据以上内容,我们做如下之总结:

  • Netflix 对原始视频文件进行压缩和转码。
  • 转码文件使用 AWS 中的并行Job程序拆分为多个块,用来加快处理速度。
  • 每个块都细分为多个分辨率适应互联网带宽。
  • 这些块均存储在 Amazon S3 上。
  • 在非高峰期间,这些文件块被传输到Open Connect IPX Box,这是 Netflix 遍布全球的CDN(定制化内容交付网络)。
  • 这些IPX 盒子能够互相传输和共享内容。

在本系列的下一部分中,我将详细介绍 Netflix 的后端核心架构。
作者:洛逸

评论