自推出以来的几年里,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 供应商(Akamai、Level3 和 LimeLight)。 随着服务越来越受欢迎,Netflix 决定构建和管理自己的 CDN,原因如下:
最重要的是,Netflix 建立了自己的 CDN,以便更好地控制应用交付和用户体验。 为了向客户提供最佳的流媒体传输,Netflix 需要最大限度地控制传输链中的三个基本组件:
Netflix 能够优化 Open Connect 的视频流,而这是供应商提供的通用 CDN 无法实现的。 Open Connect 使 Netflix 能够以更低的成本提供卓越的用户体验,并且更清楚地了解全球应用的性能。
从一开始,Netflix 的目标就是如格莱布所说,“从一个盒子中获取越来越多的千兆比特每秒”。 具体来说,Netflix 需要最大限度地增加每台设备可以同时服务的订阅者数量。 Open Connect 工程师预计需要对软件进行微调才能实现这一目标,因此他们决定采用开源软件,以获得无限的可扩展性。
如前所述,Netflix 会尽可能将其视频流设备放置在客户 ISP 的数据中心。 由于设备上运行的软件掌握在第三方手中,因此 Netflix 选择了使用 BSD 风格许可证而不是 GNU 公共许可证 (GPL) 的项目。
Netflix 选择的具体开源项目包括:
NGINX作为流媒体服务器。 其经过验证的速度和稳定性非常重要,因为 Netflix 希望尽快推出 Open Connect,而无需对其进行调整即可开始运行。 一旦 CDN 启动并运行,Netflix 就能够检查流量模式并微调 NGINX 设置。
NGINX 的另一个好处是,虽然该开源软件是在 BSD 风格的许可下分发的,但其所有核心开发人员都是 NGINX, Inc. 的全职员工,该公司为其商业产品NGINX Plus提供企业级支持。 在这方面,它结合了OSS和商业软件的最佳特性。
NGINX 运行自定义模块的灵活框架也吸引了 Netflix,而 Open Connect 团队已经创建了专门针对其视频流需求的模块。
结合 FreeBSD 和 NGINX 可以带来更多好处:
kqueue
事件通知系统调用是多路复用 I/O 的最佳 API 之一。sendfile
系统调用与aio_read
系统调用一起使用。 这些调用一起避免了磁盘 I/O 阻塞,从而实现了出色的性能。从一开始,NGINX 就被设计为适应性强并支持应用交付的各个方面。 为了让我们的商业客户更容易部署类似于 Netflix 的应用,NGINX Plus 将 Web 服务、负载均衡、内容缓存和媒体流结合在一个易于使用的软件包中。 查看我们的案例研究,了解其他领先公司如何使用 NGINX Plus 来提供具有性能、安全性和规模的应用。
我们乐于与客户密切合作,提供如何在其特定的应用交付架构中充分利用 NGINX Plus 的指导。 我们的支持和专业服务团队可以为您提供架构指导、安装、配置、更新等帮助。 联系我们以了解更多信息。
“这篇博文可能引用了不再可用和/或不再支持的产品。 有关 F5 NGINX 产品和解决方案的最新信息,请探索我们的NGINX 产品系列。 NGINX 现在是 F5 的一部分。 所有之前的 NGINX.com 链接都将重定向至 F5.com 上的类似 NGINX 内容。”