每个电影迷的一站式目的地当然是Netflix。但是,当你观看自己喜欢的电影并且它时不时地保持缓冲时会发生什么?您只需关闭应用程序并选择其他选项即可。但是,它如何迅速管理数百万用户的流量?谢谢,Python。在本文中,我们将探讨Netflix如何使用Python。

Netflix简介

Netflix是一家提供视频点播(VOD)服务的美国公司。Netflix总部位于加利福尼亚州洛斯加托斯,在全球拥有约1.48亿用户,但这一数字每天都在不断增长。在大约二十年的时间里,Netflix已成为全球最大的电视剧和电影的“战队之王”。作为美国发展最快的品牌,2019年的收入达到205亿美元,足以让它成为一个“引人注目的”,因此它的技术领域都很有趣。

基于相同的兴趣领域,Netflix揭示了它如何利用最具趋势的语言Python来实现其基础架构。

那么,现在让我们继续看看Netflix实际上是如何使用Python的?

Netflix如何使用Python

“我们在完整的内容生命周期中使用Python,从决定将哪些内容资助到运行提供最终视频的CDN到1.48亿会员。”

从管理领域到可靠性和数据科学再到机器学习等,Netflix几乎在其业务的每个方面都使用Python。

现在,让我们深入了解一下Netflix在各个领域中如何使用Python:

打开连接

Netflix使用的CDN(内容分发网络)是Open Connect。单击播放按钮时,打开连接基本上会显示在图片中。发送给最终用户的所有内容都由此CDN负责。

Open Connect需要各种其他软件系统来设计,构建和操作它们,而这些软件系统又用Python编写。此CDN底层的网络设备是Python应用程序,因为Python在解决网络问题方面非常突出。

需求工程团队

需求工程团队负责处理Netflix云的区域故障转移,流量管理,容量运营管理(管理内容可以维修的限制)和车队效率。这个团队使用的Python元素是:

NumPy和SciPy

NumPy和SciPy是用于科学计算的库。Netflix使用这些Python库来执行数值分析,从而允许管理区域故障转移。

Boto3

Boto3是适用于Python的AWS(Amazon Web Services)的软件开发工具包(SDK)。这有助于Python开发人员将Python集成到AWS中,从而允许在基础架构中进行开发。

RQ(Redis队列)

这是一个Python库,可帮助跟踪队列中存在的任务并允许其执行,从而允许管理异步工作负载。

Flask

最后,Netflix使用Flask(Python Web开发库)API将所有先前的段绑定在一起。

Netflix使用Jupyter Notebook,这是一个用于Python开发的开源Web应用程序,以及大规模的交互(Jupyter的扩展)。众所周知,Jupyter在数据分析方面很受欢迎。它非常适用于运营数据分析和可视化,从而有助于检测容量回归。

机器学习基础设施

机器学习的范围从创建个性化算法到找出潜在的用例。个性化算法有助于根据Netflix标准训练机器学习模型。它提供个性化的建议,日常概述,标签生成等。

学习深度神经网络所需的库是TensorFlow,Keras和Pytorch,而XGBoost和LightGBM 用于Gradient Boosted决策树。他们还开发了许多更高级别的库,这些库有助于与工作区域相结合,例如事实记录,特征提取,发布等。除此之外,Netflix还使用MetaFlow创建机器学习项目。

“Metaflow突破了Python的极限:我们利用良好的并行化和优化的Python代码来获取10Gbps的数据,处理内存中数亿个数据点,并协调数万个CPU内核的计算” - Netflix大数据

大数据团队负责执行ETL(提取,转换,加载)和Adhoc管道。此编排的主要部分是用Python编写的。该团队使用调度程序在Jupyter笔记本上运行,使用papermill生成带有模板的作业类型(即Spark,Presto等)。

除此之外,该团队还创建了一个完全基于Python构建的事件驱动平台。他们创建了许多事件并将其组合成一个事件,允许Netflix过滤,响应和路由事件。Pygenie也是与Genie(特色作业执行服务)接口的基础设施的一部分。

科学实验

这是一个由科学实验团队创建的平台,允许进行A / B测试以及其他一些实验。在这里,科学家和工程师可以在数据,统计和可视化方面展示新的创新。

这里实现的Python框架是Metrics Repo,它基于PyPika并允许编写可重用的参数化查询。对于统计扇区,使用PyArrow和RPy2来计算Python或R中的统计数据.Plotly有助于可视化。

视频编码/媒体云工程

该团队负责Netflix目录的编码和重新编码任务。Python大约用于50个项目,例如VMAF(视频多方法评估融合)和MezzFS(夹层文件系统),计算机视觉解决方案(处理图像)使用Archer等。

Netflix动画和NVFX

Python构成了Netflix上所有动画和视觉效果(VFX)的基础。所有Maya和Nuke联盟都是用Python完成的。

IS(信息安全)

Netflix使用Python驱动的IS系统进行自动修复,安全自动化,风险分类等。该团队最活跃的开源Python项目是Security Monkey。Netflix还使用BLESS(Bastion的Lambda Ephemeral SSH服务)来保护SSH(Secure Shell)资源。RepoKid用于授予IAM权限,TLS证书通过Lemur分配。这两项任务主要依赖于Python。

监控和自动修复

该团队被称为Insight Engineering团队。他们构建并执行用于操作洞察,诊断,自动修复和更改的工具。对于大多数服务,该团队使用Python,例如Spectator Python客户端库。该库用于记录维度时间序列。除了这些库,Winston和Bolt等产品也构建在Python框架上,即Flask,Gunicorn和Flask-RestPlus。

总结一下,人们可以很容易地宣称Python是Netflix的推动力。有了这个,我们已经到了关于“Netflix如何使用Python?”的博客的最后。我希望你清楚所讨论的一切。

相关文章