WhatsApp成功背后的Erlang语言

32位工程师能支持4.5亿的用户,这是被Facebook收购的WhatsApp公司,其原因在于Erlang语言,这是一个在80年代推出的编程语言。

使用Erlang语言你能够建立一个连接很多用户的消息应用,数百万的并行会话能够同时存在,几乎没有当机,虽然其他语言也能管理这么多会话,但是它们都不是自然的多任务系统。

来自WHY YOU SHOULD LEARN ERLANG一文认为,Erlang最了不起的特点就是变量一旦分配值以后就不再变化,如果你来自于命令式编程世界,比如Java PHP .NET或Python,这些语言的变量一旦分配值以后就一直可变,Erlang这个特性其实阻止你一些事情,使得你跟踪调试追查一个变量的值变得容易,而不再像以前一样飘忽不定。

ACTOR模型是ErLang并行编程的一个特点,具体可见:http://www.jdon.com/actors.html,Actors是一个轻量级的对象,通过发送消息实现交互。每个Actors在同一时间处理最多一个消息,可以发送消息给其他Actors。目前Erlang这一Actor模型已经被广泛应用在Scala的Akka等并发编程中。

Erlang虽然有如此傲人的成绩,你可能迫不及待地采取Erlang语言,但是现实情况可能还要复杂一些,围绕Erlang的开发者社区一直规模很小,大多数集中在欧洲,该语言语法固然有点不可思议。“如果你需要分析复杂的数据原型或构建一个简单的Web应用程序,有更好的工具可选”。

当前一些新项目正在努力致力于让Erlang语言类似Rails简化Ruby那样,使得Erlang更加对用户友好。

物联网方面一些智能爱好者正在将Erlang作为MQTT(一个轻量级协议,用于传感器之间传输消息的一部分)一部分,如果你能够通过SMS短信息调节你的自动调温器,那么你可以使用WhatsApp来控制它,是不是呢?
[该贴被banq于2014-02-25 14:47修改过]

这篇文章大概总结了WhatsApp的技术架构:The WhatsApp Architecture Facebook Bought For $19 Billion

目前并不能完全知晓WhatsApp的架构,该文只是从零星资料中进行了总结。比如超过8000 CPU核,数百TB的RAM和每秒超过70M的Erlang消息。

4.5亿的活跃用户,并且是史上最快达到这个数字的公司
32个工程师,平均每人支撑1400万活跃用户
每天收发跨7个平台的500亿消息
平均每天注册用户过百万
0广告开销
800万投资
数百个节点
8000+核心
数百TB内存
每秒Erlang消息超过7000万
在2011年,WhatsApp单服务器取得 100万个tcp会话,同时还有内存和CPU剩余。在2012年, tcp会话发展到了200万。2013年WhatsApp 发表tweet声明,70亿消息入站,110亿消息出战,即每天处理180亿消息,伟大的2013!

中文译文:http://www.csdn.net/article/2014-02-27/2818559-an-overview-at-whatsapp's-19b-architecture/1
[该贴被banq于2014-03-01 10:22修改过]