首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

30亿用户的Instagram用Python开发,Python到底牛在哪?

Python能用来开发大型项目吗?

看到有人说:一般的小项目, 代码超过 1000 行写 python 就已经是虐心了,代码超过 10w 以后你就别想用 python 开发了。

那么Python在大型项目上的表现到底怎么样呢?今天我们来看看详细分析。

我玩 Python 的时候了解到,用 Python 用的好的大型互联网公司,非 FaceBook 莫属了。

你们知道吗?Instagram 的总注册用户达到 30 亿,月活用户超过 7 亿。而令人吃惊的是,这么高的访问量背后,竟完全是由以速度慢著称的 Python + Django 支撑。

时至今日,即使已经拥有超过 30 亿的注册用户。Instagram 仍然是 Python 和 Django 的重度使用者。Instagram 的工程师 Hui Ding 说到: 『一直到用户 ID 已经超过了 32bit int 的限额(约为 20 亿),Django 本身仍然没有成为我们的瓶颈所在。』

不过,除了使用 Django 的原生功能外,Instagram 还对 Django 做了很多定制化工作:

• 扩展 Django Models 使其支持 Sharding (一种数据库分片技术),Instagram Engneering 博客专门为这件事情写过一篇博客,可参阅:Sharding & IDs at Instagram

• 手动关闭 GC(垃圾回收)来提升 Python 内存管理效率,他们同样也写过一篇博客来说明这件事情:Dismissing Python Garbage Collection at Instagram

• 在位于不同地理位置的多个数据中心部署整套系统

这说明什么?这说明没有烂语言,只有驾驭不了语言的人。

再看看相关的 FB 的使用,在Facebook,Python是被使用最多的语言之一,受欢迎程度排行第三,仅次于Hack(Facebook出品的PHP变种)和C++。这听起来可能会让很多Python迷惊讶。

事实上,Facebook的工程师构建并且维护着上千个Python库和项目,这些Python库和项目在Facebook的生产环境中随处可见。

看看Python在Facebook的地位,在数量上占到了多少?如图:

21%的Facebook架构代码

百万行代码,上千个库和二进制文件

2016年至今,平均每月5000个提交,1000个提交者。

据报道到2016年5月,5%的Python代码使用Python3。

Python在运维领域的应用

Facebook的基础设施团队大量使用Python,在生产环境中Python可以说无处不在。各个团队通常来说都会为他们自己的服务维护一个Python客户端(一般是thrift),这个客户端可以为其他团队提供简单可依赖的接口,以方便其他团队可以随时调用他们的服务。

有了这些库,产品工程师可以少写大量的代码,也减少了测试和维护的成本。使他们能够快速地将自己的服务接入到Facebook的基础架构中,同时允许架构有效可靠地扩展。

基础设施管理

产品工程师拥有大多数的Python软件,并用这些软件来管理Facebook的基础设施。即便其中的软件不是100%由Python编写,至少它也覆盖了我们的硬件设施的整个生命周期,从硬件进入我们的数据中心到它报废的时刻。

平台服务

随着我们的基础设施规模化,一些单片服务被拆分成多个组件,过程中造就了大量各种用途的Python服务。

服务配置管理

我们主机级别的配置管理是用Chef完成的。我们服务级别的配置管理,是通过一个Facebook内部的项目,叫Configerator,完成的。工程师们通过Python代码生成配置对象,这些配置存储在JSON文件中,任何的服务都能够读取。验证器,也是Python写的,用来验证这些配置的正确性。Python还是项目Tupperware的配置语言,这个项目是Facebook的容器部署系统。

使用Python让我们能够动态生成配置对象,而不用创建、维护、学习使用复杂的模板系统。

甚至在运维配置上也广泛使用了 Python 工具。

Facebook的规模使得Python的效率被使用到了极致,他们的代码里使用了大量的库(Twisted, Gevent, futures, AsyncIO, 和很多其他的)。很多的迁移项目或者新项目都使用Python3,除非有不得已的理由必须使用Python2。目前,我们运行的服务中5%的代码是用Python3编写的。

看到大公司是如何使用 python 的了吗?

所以,Python在大型项目的表现上是十分出色的。现在的情况是,你学了Python就会有很多机会,无论是正式工作、还是兼职。

◆◆◆◆◆

现在人工智能爆发,Python是一门脚本语言,它更适合去做人工智能这个领域,在人工智能上使用Python比其他编程语言有更大的优势。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181018B0V87700?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券