说说网飞(Netflix)的Open Connect
2021-11-26 21:53:35 阿炯

2021年11月消息,如果运气好,Netflix 的方案可能最终会成为行业标准。日前Netflix出品的《鱿鱼游戏》剧集再次引爆全球无数观众。虽然“身经百战”的观众早已对这类大逃杀题材的作品建立起充分的心理预期,但 Netflix 凭借着对反乌托邦题材的极致挖掘再次证明,他们有决心打造一出迄今为止最成功的原创剧集,同时也向其他竞争对手证明自己的业务高度已然遥不可及。

与此同时,很多同类流媒体平台还深陷老大难问题而无法自拔:视频卡顿、控件失效或者服务崩溃等等;而 Netflix 却鲜少出现问题,这离不开其优秀的基础设施建设。近日,《The Verge》撰文谈 Netflix 庞大的服务器网络 Open Connect,其中指出,正是这个不被太多人在意的技术细节,从根本上解决了大部分现代流媒体面临的共同难题。

Open Connect 的奥秘

过去十多年来,Netflix 流媒体服务出现过多少次技术问题?不能说没有,但肯定屈指可数。服务的核心,也就是应用程序底层的工程方案,才是决定一切流媒体成功与否的关键。

Netflix 用了十年时间搭建起一套名为Open Connect的服务器网络。Netflix 公司 Open Connect 副总裁 Gina Haspilaire 表示,当初之所以要构建 Open Connect,是因为 Netflix“清醒地意识到,我们需要构建一定水平的基础设施技术才能维持起我们想要获得的预期流量。我们觉得自己能成功,也知道当时的互联网还支撑不起预期中的全球流量规模。”

没人能在应用程序不断崩溃、视频老在缓冲的情况下坚持看完一部电影。Netflix 对这个问题很有先见之明,他们知道要想保持稳定的质量水平,首先需要建立自己的内容分发系统。

Open Connect 是 Netflix 的内容交付网络,专门用于向全球用户分发电视节目与电影。项目始于 2012 年,包括由 Netflix 向互联网服务商提供物理设备,借此实现媒体流量本地化。这些设备存储着 Netflix 的内容副本,负责减少内容在抵达播放用户之前需要经过的通道数量,借此减轻网络压力。

大多数主要流媒体服务都依赖于第三方内容交付网络(即 CDN)实现视频传递,正是这种通行实践让 Netflix 的自有服务器网络变得鹤立鸡群。如果没有像 Open Connect 这样的系统或者其他第三方 CDN,互联网服务商所请求的内容必须“通过一个对等点、再经由四到五个其他网络,才能抵达数据源头或者内容存储位置。”内容交付网络厂商 Akamai 媒体工程首席架构师 Will Law 强调,这不仅会拖慢内容交付速度,而且考虑到互联网服务商可能需要付费才能完成内容访问,所以整个实现成本也更为高昂。

为了回避流量和成本问题,Netflix 会提前将内容副本发送至自有服务器,从而防止 Netflix 流量在流媒体峰值时段被播放端网络所阻塞。

“我们的 Open Connect 会在离用户互联网服务商最近的位置部署一份 Bridgerton 副本——有时候甚至会直接部署在互联网服务商的网络之内。这就基本避免了互联网服务商先通过网络对接服务器、再把提取到的内容传输给用户的过程。”Gina Haspilaire 说道。而且,Netflix 的服务器几乎无处不在。目前Netflix 表示已经在 158 个国家 / 地区部署有 17000 台服务器,而且未来还计划进一步扩展其内容交付网络。根据介绍,Netflix 会根据哪些位置周边的用户更多、哪些区域的互联网服务器商合作门槛更低对服务器部署做出优先级排序。

Law 解释道,“为了提高性能,流媒体服务商纷纷将服务器尽可能靠近最终用户,再由这些服务器提供最后一英里区域内的网络内容。这就避免了把所有内容请求都返回源头,再将内容经由互联网整体传递的过程。这不仅减轻了互联网的传输负担,也缓解了对等点的承载强度。”

十年前 Open Connect 刚刚立项时,Netflix 也确定了与互联网服务商全面合作的基本部署思路。Netflix 免费为互联网服务商提供服务器,再由内部可靠性团队与这些服务商一道维护这些服务器设备。根据 Netflix 与 Akamai 的介绍,互联网服务商也能从中受益,因为就近获取内容副本可以降低他们的网络基础设施运营成本。

Law 称,“由此带来的运营职责不算特别繁重,但却带来了令人释怀的解脱。而且这些服务器的基本作用跟 Akamai 乃至其他 CDN 完全相同,唯一的区别就是它们只服务于 Netflix,属于 Netflix 内容的专属 CDN。”

包括 Akamai 在内大多数主要第三方 CDN 服务商都需要服务成千上万客户并应对企业提出的种种要求,而 Netflix 的内部 CDN 只着眼于一个目标:分发 Netflix 内容。Law 表示,为了顺利将电影或电视节目交付到每一位点播观众面前,内容分发商必须建立起这样一套全面的 CDN 合作关系或者服务器网络。

虽然 Netflix 没有透露他们搭建并维护这些服务器的具体成本,但也提到自十年前立项以来,Open Connect 的总投资已经达到 10 亿美元上下。他们还在不断向 CDN 投入大量资金,继续坚定推进这一以良好观看体验与用户高参与度为核心的 Netflix 业务战略。很明显,Netflix 的整个订阅商业模式之所以成立,依靠的就是为用户提供符合预期的视频流质量。Netflix 还需要考虑到一个残酷的现实:美国的互联网基础设施在本质上可谓支离破碎、头尾难以相顾。

电子前沿基金会的 Katharine Trendacosta 在采访中表示,“Netflix 之所以必须建立自有 CDN,是因为美国的互联网服务商实在垃圾得不行。他们很清楚,只要寄希望于互联网服务商,就必然会有相当一部分用户始终受到视频缓冲或者低画质图像的折磨。”

为什么有效


Netflix 最关注的目标,就是无论互联网服务商有多差劲、都能保证用户享受到良好的内容观看体验。为此Netflix 会在服务器上为每部剧集或影片保留 3 个副本,这些副本的图像质量各不相同。如果您的互联网基础设施不堪重负甚至暂时中断,系统会导入码率较低的版本,保证用户始终有内容可看。

Haspilaire 解释道,“我们会根据网络质量调整内容,而不是根据内容调整网络质量。正因为如此,观众在观看时感受不到网络条件发生了哪些波动——流媒体内容一直在稳定呈现,而我们会随时间推移随时调整播放的版本……这样即使短时间内断开网络又重新连入,用户的屏幕上也不会出现缓冲提示。”

那么为什么是 3 个副本?Trendacosta 指出,美国本地的互联网服务体验毫无可靠性可言。设施宕机、WiFi 连接不良乃至其他网络故障都有可能影响用户的互联网访问能力,而 Netflix 则尽可能与互联网服务商合作以解决大部分网络传输问题。

Haspilaire 提到,Netflix 会在非峰值时段预先部署好影音内容,保证这部分传输任务不会跟其他流量竞争互联网传输带宽。至于部署的具体内容和位置,Netflix 会提前预测高人气影片 / 剧集,并将数据相应发送至目标服务器。Haspilaire 表示,“我们不只是把内容部署在世界各地的内容交付服务器上,同时也会根据预先做出的流行度预测设计部署方案。同时会预测哪些内容更受欢迎,并把影音尽可能部署在正确的服务器中。通过提前准备,我们的电影和剧集就能在黄金时段为几乎 100% 的观众提供本地副本,基本消除了由网络服务中断引发的糟糕观感”。之后,Netflix 会根据内容的受欢迎度在服务器上转移视频。Open Connect 拥有两类服务器:闪存型(提供更快的交付速度)和存储型(最多可容纳 350 TB 数据)。如果存储内容的人气不断提升,Netflix 就会把相应的副本转移到闪存服务器当中。

Netflix 公司解释道,“闪存服务器的基本定位就是支撑大部分流量服务,所以随着某些节目或影片的需求量提升,我们的 OCA 服务器就会把内容从存储型转移到闪存型、保障观众获得稳定的观看体验”。

新冠疫情的突然爆发,让全球数亿人窝在家中持续观看流媒体内容。而这一突发状况,也成为 Netflix 这项十年规划的收官之战与立威之路。Haspilaire 表示,“这场疫情以一种我们不愿看到的方式测试了 Netflix 基础设施与技术体系”。而 Open Connect 顶住压力,证明自己有能力帮助 Netflix 应对不断增长的未来需求。

流媒体之王

Open Connect 是 Netflix 在疫情期间赢得良好市场表现的一大支柱,但 Netflix 力压竞争对手靠的显然不只这一招。Rayburn 也向《The Verge》列举了 Netflix 视频与音频编码项目的例子,强调虽然看起来 Netflix 当下已经建立起“巨大的优势”,但作为战场中的后来者,他们还需要凭借服务品质与服务态度去吸引和留存用户。

Rayburn 指出,“每个人都承认,Netflix 建立起了一套能够大规模稳定运行的系统,而这也是整个流媒体行业最不关注的方向。只有在规模化运营中始终提供良好、优质的消费者体验,我们才能获得如此庞大的订阅者群体。没人拥有 Netflix 这样的基础设施规模,也没人拥有同等程度的专业积累。”

至于 Netflix 为什么这么成功,已经有不少人从各个角度进行剖析,其技术和企业文化也一直广受好评。资深架构师、微服务技术专家杨波曾向我们总结了一些 Netflix 的厉害之处,其中有几点尤其能体现 Netflix 在技术创新上的大胆和前沿。比如,在 2009 年左右, Netflix 就开始启动上公有云战略(虽然背后也是吃了自建数据中心的苦头),应用逐步向 AWS 迁移,这个过程一共持续了将近 5 年,到 2015 年的时候迁移完毕。而现在回想,2009 年左右的 AWS 其实还不太成熟,别说当时,即使现在也没有几个大厂敢提全部迁移公有云的战略。

又比如,Netflix 早在 2013 年就提出了 Cloud Native 理念,也就是现在常说的云原生,而且它的整个平台 (AWS IaaS + PaaS) 都是云原生的。近年容器技术大火,大家都在谈不可变基础设施的理念,本质就是镜像部署。Netflix 在 2012 年前就已经实现镜像部署,发布的单位是 AMI(Amazon Machine Image) 镜像。

另一方面,开放开源也是 Netflix 的一种竞争战略。在进行大规模生产级微服务架构实践的同时, Netflix 也开源了整个微服务技术栈,比如现在大家耳熟能详的 Zuul 网关、Eureka 服务发现注册中心、Hystrix 熔断限流、Archaius 配置等组件。对 Netflix 来说,开源有望能将自己的解决方案建立为行业标准和最佳实践。其次,开源亦可以帮助建立 Netflix 技术品牌,有利于雇佣、留住和吸引顶级工程师。第三,Netflix 可以从共享生态中获得反馈输入并受益。

随着其服务体系的不断扩张,也许终有一天各大老牌流媒体厂商反过来要从 Netflix 的基础设施与自上而下的业务战略中取经。甚至Netflix 的方案可能最终会成为行业标准。


优化了FreeBSD的网络栈-在AMD EPYC上提升超过两倍的性能

2019年11月,来自Netflix的员工Drew Gallatin在挪威举办的2019欧洲BSD大会(EuroBSDcon 2019)上介绍了该公司对FreeBSD网络栈的优化。Netflix之前为了能让视频流在Intel Xeno和AMD EPYC服务器上达到200Gb/s而不断发力,现在他们终于让传输率达到190Gb/s,同时发现在AMD EPYC Naples/Rome服务器的具有多达两倍增幅的潜力,远超 Intel。

Netflix一直以来都用FreeBSD作为数据中心服务器系统而著称,尤其是网络性能要求高的地方更为如此。但由于想要在单个服务器上达到200Gb/s的网络性能,于是就使得他们开始在FreeBSD的网络栈上为NUMA单元做优化。在NUMA本地内存上为内核TLS密钥缓存分配空间,以及使用sendfile传送文件,也都属于他们的优化范围。同时还顺手改善了Nginx的网络连接处理以及入站连接处理。

Netflix在FreeBSD上的NUMA优化,使得传输速率在 Intel Xeno 服务器上从105Gb/s增长到191Gb/s,而NUMA总线占用率从40%下降到13%。


AMD EPYC的性能就更加令人印象深刻了,从68Gb/s增长到194Gb/s。换句话说,EPYC最初远比Xeno慢,但现在Netflix的AMD EPYC服务器比起 Intel更接近与200Gb/s的目标。


不但因为EPYC更快,而且还要感谢的是,由于每个插槽有128条PCIe传输通道,因此他们可以在一个插槽中获得使用两个Intel Xeon CPU的能力。另一方面,Netflix也为此批评AMD的工具实在太过匮乏(即使在Linux上也是这样)。最终Netflix现在可以在每台FreeBSD服务器上达到200Gb/s的加密视频流传输率了,详情可见此处


喜欢 Netflix 么?你应该感谢 FreeBSD

Netflix 是世界上最受欢迎的流媒体服务之一。对,你已经知道了。但你可能不知道的是 Netflix 使用 FreeBSD 向你提供内容。


是的。Netflix 依靠 FreeBSD 来构建其内部内容交付网络(CDN)。

CDN 是一组位于世界各地的服务器,它主要用于向终端用户分发像图像和视频这样的“大文件”。

Netflix 没有选择商业 CDN 服务,而是建立了自己的内部 CDN,名为 Open Connect,它使用了自定义硬件:Open Connect Appliance,可以在下面的图片中看到它。它可以每秒处理 40Gb 的数据,存储容量为 248 TB。


Netflix 免费为合格的互联网服务提供商(ISP) 提供 Open Connect Appliance。通过这种方式,大量的 Netflix 流量得到了本地化,ISP 可以更高效地提供 Netflix 内容。

Open Connect Appliance 运行在 FreeBSD 操作系统上,并且几乎完全运行开源软件。

Open Connect 使用最新版 FreeBSD

你或许会觉得 Netflix 会在这样一个关键基础设施上使用 FreeBSD 的稳定版本,但 Netflix 会跟踪 FreeBSD 最新/当前版本。Netflix 表示,跟踪“最新版”可以让他们“保持前瞻性,专注于创新”。

以下是 Netflix 跟踪最新版 FreeBSD 的好处:
更快的功能迭代
更快地使用 FreeBSD 的新功能
更快的 bug 修复
实现协作
尽量减少合并冲突
摊销合并“成本”

运行 FreeBSD “最新版” 可以让我们非常高效地向用户分发大量数据,同时保持高速的功能开发。
--Netflix

请记得,甚至谷歌也使用 Debian 测试版而不是 Debian 稳定版。也许这些企业更喜欢最先进的功能。与谷歌一样,Netflix 也计划向上游提供代码。这应该有助于 FreeBSD 和其他基于 FreeBSD 的 BSD 发行版。

那么 Netflix 用 FreeBSD 实现了什么?以下是一些统计数据:

使用 FreeBSD 和商业硬件,我们在 16 核 2.6 GHz CPU 上使用约 55% 的 CPU,实现了 90 Gb/s 的 TLS 加密连接。
--Netflix

如果你想了解更多关于 Netflix 和 FreeBSD 的信息,可以参考 FOSDEM 的这个演示文稿

目前大型企业主要依靠 Linux 来实现其服务器基础架构,但 Netflix 已经信任了 BSD。这对 BSD 社区来说是一件好事,因为如果像 Netflix 这样的行业领导者重视 BSD,那么其他人也可以跟上,你觉得呢?


一台退役的Netflix缓存服务器

据 Vice 在2022年10月的报道,Reddit 用户 PoisonWaffle3 近日发帖称,自己设法免费弄到了 Netflix 的一个用了 10 年的缓存服务器,尽管是十年前生产的,但即使以今天的标准来看,其配置也不低,并具有惊人的 262TB 的存储空间。该网友称这个 Netflix 服务器是由他就职的公司提供的,该公司是一家互联网服务提供商。显然,该互联网服务提供商正在用较新的硬件升级其基础设施,这就是该网友能够设法免费弄到这个服务器的原因。


这台服务器被称为 Netflix 缓存服务器,属于 Netflix 的开放连接内容交付网络(CDN)。这个系统至今仍在使用,旨在通过给 ISP 提供自己的 Netflix 缓存服务器来降低 Netflix 平台的整体带宽需求。能使 Netflix 内容可以直接从 ISP 的服务器上播放,而不是从 Netflix 的服务器群中传输。


该服务器被涂成亮红色,采用 4U 机架式服务器机箱的形式。前面有一个用于监测服务器健康状况的 LCD 屏,还有一对 VGA 端口和一对 USB 端口。左边是一对电源,可能支持热插拔。


规格方面,该服务器采用了超微公司的主板,搭载英特尔 10 核超线程至强 E5 2650L v2 芯片,64GB DDR3 内存和一个 10GbE 网卡。在存储方面,该系统采用了 6 块 500GB 美光固态硬盘和 36 块 7.2TB 7200RPM HDD,共计 262TB。


据前 Netflix 高管 Dave Temkin 称,这一系列服务器原本主要运行 FreeBSD 系统,部分运行 Linux 系统。该网友对其进行测试和维护(更换嘈杂的风扇和一块坏盘)后,将其转化为了一台运行 TrueNAS 的超大型 NAS。