Netflix优惠码论坛

完整版: 为什么 Netflix 选择 NGINX 作为其 CDN 的核心
你目前正在浏览的是简化版. 请点击这里浏览完整版
自推出以来的几年内,Netflix 的在线视频流媒体服务已发展到为 40 个国家/地区的超过 5000 万用户提供服务。我们已经在 Netflix 的采用微服务:架构设计的经验教训和Netflix 的采用微服务:团队的经验教训中分享了 Netflix 的软件开发工程师从传统的整体开发流程过渡到持续交付和微服务时采用的一些最佳实践。和工艺设计。

在这篇文章中,我们将讨论 Netflix 成功的另一个核心贡献者:其内容交付网络 (CDN)、Open Connect。我们感到自豪的是,NGINX 在每台 Open Connect 交付设备上运行,在 Netflix 跟上视频服务爆炸性增长步伐的能力中发挥着关键作用。NGINX 的 Gleb Smirnoff 与 Open Connect 团队合作了两年多,去年 10 月在我们的用户大会 nginx.conf2014 上,他解释了 Netflix 选择 NGINX(以及 FreeBSD)来为其业务的这一关键部分提供支持的原因。

Netflix 为什么要建立自己的 CDN

Netflix 最初将流媒体视频交付外包给三个大型 CDN 供应商(Akamai、Level3 和 LimeLight)。随着该服务变得越来越流行,Netflix 认为构建和管理自己的 CDN 是有意义的,原因如下:
  • 从实际角度来看,CDN 供应商正在努力扩展其基础设施,以适应客户对 Netflix 视频流的需求增长。
  • 从财务角度来看,随着流媒体视频量的增加,外包费用很快变得令人望而却步(这是许多流行应用程序和网络资产所经历的挑战)。
  • 从商业角度来看,很明显,视频流媒体正在取代 DVD 借贷,成为 Netflix 的主要收入来源,将公司主要业务的关键部分外包是没有意义的。

最重要的是,Netflix 构建了自己的 CDN,以便更好地控制应用程序交付和用户体验。为了向客户提供最佳的流媒体传输,Netflix 需要最大限度地控制传输链中的三个基本组件:
  • 用户的视频播放器。Netflix 已经控制了这个组件,因为它的开发人员编写了客户用来观看 Netflix 内容的所有特定于设备的应用程序。
  • 用户和 Netflix 服务器之间的网络。虽然无法直接控制该组件,但 Netflix 通过向 ISP 提供免费视频流设备以换取 ISP 数据中心用于容纳这些设备的机架空间,最大限度地缩短了与客户的网络距离。(设备也放置在互联网交换点 [IXP] 上,为 ISP 对容纳第三方设备不感兴趣的客户提供服务。)视频流对数据包延迟和丢失、到达顺序错误以及不可预测的(抖动)回合特别敏感。 TCP/IP 固有的行程时间以及最小化网络距离可减少这些异常情况的潜在风险。
  • 视频服务器(Open Connect 本身)。运行自己的 CDN 使 Netflix 可以自由地调整 CDN 软件,以尽可能地补偿互联网异常情况。它可以运行自定义 TCP 连接控制算法和 HTTP 模块。它还可以非常快速地检测服务器和网络问题,并将客户端重新路由到备用服务器,然后登录到服务器硬件并“从内部”排除故障。

Netflix 能够以供应商提供的通用 CDN 无法实现的方式优化视频流的 Open Connect。Open Connect 使 Netflix 能够以更低的成本提供卓越的用户体验,并更好地了解全球应用程序的性能。

为什么 Netflix 选择 NGINX 和 FreeBSD

正如 Gleb 所说,从一开始,Netflix 的目标就是“从单个设备每秒获得越来越多的千兆比特”。具体来说,Netflix 需要最大限度地增加每个设备可以同时服务的订户数量。Open Connect 工程师预计需要对软件进行微调才能实现这一目标,因此他们决定使用开源软件,因为它具有无限的可扩展性。

如前所述,Netflix 在可能的情况下将其视频流设备放置在其客户 ISP 的数据中心。由于设备上运行的软件将掌握在第三方手中,Netflix 选择使用 BSD 风格许可证而不是 GNU 公共许可证 (GPL) 的项目。

Netflix 选择的具体开源项目是:
  • FreeBSD作为操作系统,因为它以快速且稳定而闻名。开发者社区很强大并且愿意与供应商合作。
  • NGINX作为流媒体服务器。其经过验证的速度和稳定性非常重要,因为 Netflix 希望尽快推出 Open Connect,而无需为了启动而对其进行调整。CDN 启动并运行后,Netflix 就能够检查流量模式并微调 NGINX 设置。

NGINX 的另一个好处是,虽然开源软件是在 BSD 风格的许可证下分发的,但其所有核心开发人员都是 NGINX, Inc. 的全职员工,NGINX, Inc. 为其商业产品 NGINX Plus 提供企业级支持。在这方面,它结合了OSS和商业软件的最佳特性。

NGINX 用于运行自定义模块的灵活框架也吸引了 Netflix,Open Connect 团队已经创建了专门针对其视频流需求的模块。

结合 FreeBSD 和 NGINX 可以带来更多好处:
  • NGINX 的事件驱动设计是其出色性能的关键之一,而 FreeBSD 的kqueue事件通知系统调用是复用 I/O 的最佳 API 之一。
  • 无需任何修改,NGINX 就可以将sendfile系统调用与系统调用一起使用aio_read。这些调用共同避免了磁盘 I/O 阻塞,从而实现出色的性能。

NGINX Plus 和 NGINX 也可以优化您的应用程序交付

从一开始,NGINX 就被设计为具有适应性并支持应用程序交付的各个方面。为了使我们的商业客户更容易部署类似于 Netflix 的应用程序,NGINX Plus 将 Web 服务、负载平衡、内容缓存和媒体流结合在一个易于使用的软件包中。查看我们的案例研究,了解其他领先公司如何使用 NGINX Plus 交付具有性能、安全性和规模的应用程序。