网飞公司(Netflix)是怎么用Python的?

本文译自网飞科技博客,原文:
https://netflixtechblog.com/python-at-netflix-bba45dae649e?gi=83b411a8aff

Netflix(网飞)是全球最大的视频流媒体平台,在除中国大陆地区之外的所有国家和地区都提供视频点播服务。Netflix是经营在线业务公司中的一个亮点。它成功地把传统的影像租赁业务和现代化的市场营销手段、先进的IT网络技术结合起来,从而开创了在线影像租赁的新局面。Netflix通过整合其自身的营销手段和最近的IT网络技术,成功地改变了消费习惯和打造了自己的品牌优势。

Netflix的技术本质上就是回答两个问题:

1. 如何提升用户观看体验?

2. 如何在内容上让用户喜欢?

而这两个问题,在Python的帮助之下,交了一份令人满意的答卷,让我们一起来看看 Python 在 Netflix 是如何应用的。

1.加快视频分发速度

为了加快视频的分发速度,网飞开发了一个名为 Open Connect 的内容分发网络(content delivery network,CDN),尽可能靠近用户,为客户改善流媒体体验,加快视频的下载速度。

而设计、构建和运营这个 CDN 基础设置所需的各种软件系统,其中很多都是用 Python 编写的。其有一个配置信息管理系统,里面跟踪网飞的网络设备库存:有哪些设备、哪些型号,用什么硬件组件,都位于什么位置。这些设备的配置由几个其他系统控制,包括数据源、设备配置的应用和备份。用于收集运行状况和其他运营数据的设备交互是另一个 Python 应用程序。

2.快速解决运营需求

网飞还用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将所有先前的功能绑定在一起。

他们的工具主要是由 Python 构建的。编排故障转移的服务使用 numpy 和 scipy 来执行数值分析,boto3 对 AWS 基础设施进行更改,rq 用于运行异步工作负载,将其打包在一个 Flask API 的简单接口层中。放入 bpython shell 并进行临时制作的能力已经不止一次挽救了局面。

( bpython是一个不错的Python解释器的界面,开发者的目的是提供给用户所有的内置功能,很像现在的IDE(集成开发环境),但是将这些功能封装在在一个简单,轻量级的包里,可以在终端窗口里面运行,弥补原始解释器的不足。)

3.警报与统计、 自动修复

他们还用警报和统计分析工作中使用 Python。警报系统显示问题时,他们使用Python的许多统计和数学库(如 numpy、scipy、ruptures、pandas)来帮助自动分析 1000 多个相关信号。并开发了一个用于团队内外的时间序列相关系统 Spectator Python,以及分布式工作系统,用于并行处理大量的分析工作,以快速交付结果。

除此之外,他们也经常用Python来自动化任务、数据挖掘和清理的工具,也是可视化工作的方便工具。

4.信息安全

网飞信息安全团队使用 Python 为 Netflix 实现了许多高层次目标:安全自动化、风险分类、自动修复和漏洞识别等等。利用 Python 来保护使用 Bless 的 SSH 资源、利用 Python 帮助使用 Repokid 进行 IAM 权限调整、使用 Python 来帮助Lemur 生成 TLS 证书等等。

5.个性化推荐

说起个性化算法,当然少不了机器学习和深度学习。他们使用 Python 来训练一些 Netflix 影响用户体验关键方面的机器学习模型,如决策树、XGBoost等,而且在开发过程中,实现了一套自动化流程。

6.优化Python极限

为了使得生产效率提高,他们还利用机器学习开发了一个叫Metafolw的Python框架。这个框架提升了 Python 的极限,通过良好的设计和对Python代码的部分改造,成功实现了使用Python来获取几十G数据的可能性,大大提升了计算能力。

7.大数据编排

为了更好地编排大数据,他们还构建了一个用Python编写的事件驱动型平台,将许多个系统统一到该工具中,转化成事件流的形式进行调度,并具有模板化的作业类型。

因此,他们能够随时解耦微服务,而且通过这个平台,他们能够了解数据的流动状况,以及发生的所有事情。当然,Netflix 的系统之所以能够如此稳定,还有更多的技术因素在里面,这里就不能够再赘述了。有兴趣可以看看下面这本书。

《 混沌工程:Netflix系统稳定性之道 [Chaos Engineering]


文中涉及到的部分项目、库的官方地址:

Open Connect: https://openconnect.netflix.com/en/

bpython: https://bpython-interpreter.org/

nteract: https://nteract.io/

visualization tools: https://github.com/nteract/nteract/tree/master/packages/data-explorer

Spectator: https://github.com/Netflix/spectator-py

Security Monkey: https://github.com/Netflix/security_monkey

Bless: https://github.com/Netflix/bless

我们的文章到此就结束啦,如果你喜欢我们今天的Python 教程,请持续关注我们,如果对你有帮助,麻烦在下面点一个赞/在看哦有任何问题都可以在下方留言区留言,我们都会耐心解答的!


​Python实用宝典 (pythondict.com)
不只是一个宝典
欢迎关注公众号:Python实用宝典

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注