5天用户破亿的Threads,后端竟是Python?

转载请注明出处❤️

作者:测试蔡坨坨

原文链接:caituotuo.top/c3b77bf4.html


前言

你好,我是测试蔡坨坨。

近日,一款名为Threads的社交软件爆火。

那么这款Threads App到底是个啥,它跟Twitter有何关系呢,又能否成为新一代的社交媒体巨头,背后的支撑竟然是Python?

今天,我们就来一探究竟,顺便蹭一波热度。

Threads是什么

前段时间,Elon Musk宣布将对Twitter用户的每日查看推文数量做出限制,最初的规定是非认证新用户每天只能查看500条推文,非认证老用户1000条,已认证用户10000条,并且不注册不允许查看。500、1000看似很多,但实际上评论也算在内,所以可能一条热门推文就消耗了一天的额度。而普通用户想要认证则需要花钱,核心目的就是扭亏为盈。如此苛刻的限制,很快就引起大量推特用户的不满。

有趣的是,恰好在这个时候,美国时间2023年7月5日晚,Facebook的创始人/Meta的掌权人Mark Zuckerberg宣布推出Threads。用户注册数量1小时超过100万、7小时超过1000万、发布首日就超过了3000万、5天就破1个亿,这个增长速度轻松打破了年初刚刚以2个月突破1亿用户的ChatGPT,成为用户增长速度最快的App。

那么,让我们来看看Threads是个啥?

Threads(/θredz/),这个英文单词有线、线程、线索的意思,官方还没有一个明确的中文翻译,这里的Thread大概可以理解为每一条推文的意思。打开Threads的界面,很明显可以看出这就是瞄着Twitter来势汹汹的竞品。

众所周知,Twitter的字符限制是众多社交媒体平台上最短的,只有280个字符,而Threads现在的字符限制为500个字符。由于Twitter的字符限制,就会有一条推文发不完的情况,所以Twitter玩得比较溜的用户会采用类似预告的形式,把梗埋在第一条的末尾,然后在下面发一连串相关联的推文,这种形式就一直被称为Threads。

而zuck就直接把这个Twitter的功能拿来做自己App的名字,老用户更是一目了然,相当于把Twitter的痛点直接放大,然后做了个App。

Threads初体验

为什么Threads如此受欢迎呢?

我们直接下载一个来一探究竟。在Google Play/App Store上搜索Threads并进行安装,目前Threads支持100多个国家和地区,因此需要用这些地区的账号下载,可以看到它的logo像一个@字符,并写着是一个Instagram App。

因为Threads和Instagram的账号是强绑定的,因此我们打开下载好的Threads,首页就是很明显的提示用Instagram账号进行登录,如果你有多个Instagram账号,也可以在这里进行切换。

这里也说明了Threads用户数增长如此之快其实是背靠Instagram这棵大树,一出生就含着金钥匙,用户都是从Instagram涌向Threads。为了Threads的用户黏性,Meta可谓是下了血本,不惜给自家的月活超过20亿的支柱社区Instagram放血来浇灌新生的Threads。

当你的Instagram好友也使用Threads,登录进来后它会默认问你是否关注所有的Instagram好友。

Threads整个界面非常的简洁,底部五个按钮对应着不同的功能,几乎不存在需要多次点击的二级页面,暂时没有广告。

首页是你关注的人和系统的自动推荐;第二个搜索页是推荐关注的人;最中间的按钮是发帖按钮,点击按钮进入发帖页面,输入文字并且可以上传图片、视频等附件;第四个按钮是别人的关注请求和你的互动;最后是个人简介,这里的个人简介可以从Instagram直接同步过来。

Threads vs Twitter

那么,Threads和Twitter又有何区别呢?

横向对比Twitter,主要有以下几点区别:

  • 首先是字符限制,Twitter只支持280个字符,而Threads支持500字符上限。
  • Threads只能用Instagram账号登录,而Twitter可以自己注册,不限注册方式。
  • 由于Threads和Instagram强绑定,所以如果你在Instagram上有蓝V认证,那么在Threads上也会有蓝V认证,无需再单独缴费认证。
  • 在Threads中,可以在用户主页中点击Instagram按钮直接跳转到该用户的Instagram主页。
  • Threads支持上传5分钟的视频,而Twitter对于未认证的用户支持上传2分20秒的视频。

技术栈

简单来看,Twitter其实就是图片减少的Instagram,所以Instagram想做出一款Twitter,并非难事,而Threads就是Instagram团队做出来的,而且用的也是Instagram的技术栈,基于CPython 3.10进行优化的Cinder(Meta 基于 CPython 3.10 构建了内部自用的高性能分支 Cinder)。

没错,就是那个“性能很差,无法做大型项目”的Python。

从某种程度上也证明了“Python绝对无法做大型项目”的说法是绝对不对的。

此时有小伙伴会说,Cinder不是Python。确实,Cinder在Python的基础上引入了大量的优化,针对性能进行了许多优化,包括JIT(即时编译器,JIT compiler,just-in-time compiler)、字节码内联缓存、延迟加载模块、预编译静态模块、协程的即时评估,以及实验性字节码编译器。但是,它的本质依然是Python。

Cinder为Instagram提供后端支持,并在Meta中越来越多的Python应用程序中使用。

根据Threads工程师的介绍,Threads和Instagram一样采用Django作为Web服务器,所有性能密集型的任务都放到各种C++聚合器和推荐类型服务中。该工程师还表示,2019年刚加入Instagram时,他们在生产环境运行的还是原生的Python,现在已经用上了自定义JIT。

从技术上来看,它是CPython3.10版本的一个fork,某种程度上也代表着CPython性能优化的一种可能性。

那么,是否可以使用Cinder来代替CPython呢?答案是不能。

Cinder也明确表示不会成为CPython的替代品,并且也不会提供支持。

虽然性能是衡量编程语言好坏的重要指标之一,但它并不是唯一的衡量标准。

编程语言的好坏涉及到多个方面,比如易用性,一门好的编程语言应该易于学习和使用,它应该有清晰的语法和良好的文档,提供方便的开发工具和库,以及有助于减少代码错误和提高开发效率的特性,有句类似的话也很经典“一门语言的最大开销是开发者的培训成本”。

跑得快也不代表省时间,其次省的时间未必有意义,比如一个自动化测试脚本,每天晚上需要跑一次,这是时间是2分钟或者是2个小时,显然并不是很重要,它只要一个晚上能跑完就行,但是为了优化这个时间,可能需要投入更多的开发成本,显然是不划算的。

在敏捷开发模式下,抓住风口,抢占先机才是王道,Threads如果采用高性能语言,可能服务器就能省下不少钱,但等过了这个风口,等Twitter站稳了,再推出一个Threads,恐怕很难再取得今天的成果。

总之,性能是衡量编程语言好坏的重要因素之一,但并非唯一的标准。选择编程语言时,应该综合考虑多个方面,并根据具体项目需求和个人偏好做出决策。