whatsapp使用指南

支撑4.5亿活跃用户的whatsapp架构概览只有50个人

-whatsapp技术架构 -whatsapp -facebook -erlang

【编者按】以190亿美元的价格出售给Facebook,生意业务会商過逞中更受到了拉里·佩奇的劝阻,WhatsApp确实取得了一场光辉的胜利。然而不可忽视的是,该公司用以服务4.5亿活泼用户的工程团队只有区区32人。克日HighScalability首创人Tod Hoff撰文分析了这一天价收购的缘故和WhatsApp的高可靠架构,虽然并不完备,但还是有很多值得学习的地方。


以下为译文:

从WhatsApp软件架构师Rick Reed在3月份即将发布的演讲介绍中(That's 'Billion' with a 'B': Scaling to the next level at WhatsApp),我们可以得知WhatsApp当下的一些表面:

如今,WhatsApp有数百个节点、数千个焦点及数百TB的内存,我们的目的是服务全全球数十亿用户。在WhatsApp,我们使用了Erlang/基于FreeBSD服务器底子办法,为了应对消息的增长需求,我们必须搞定一个又一个挑衅,可以说在系统容量(大于8000焦点)和速率(每秒Erlang消息超7000万)上的极限挑衅从未停歇!

鉴于这个演讲在3月份才公布,这里我们不妨聚焦Rick Reed两年前的分享—— WhatsApp怎样应对数百万的同时链接数。

在Yahoo!供职时,Rick Reed曾负责用C++创建高性能的消息总线,因此他对高扩展性架构并不生疏。WhatsApp首创人中还包括了一个拥有大量扩展履历的Yahoo!工程师,不难得知,WhatsApp有如今的成绩与两个首创人的超凡技能是分不开的。而计划成为全全球50亿手机服务商的宏大目的,他们也必须将技能推向极限!

190亿美元的生意业务的背后

做为一个程序员,假如你问WhatsApp是否值那么多,我的答案一定是否认的!由于产品真正价值不在于那些枯燥的代码,而在怎样让用户嘻歡而且使用。

着眼这个应用的特点,我们知道WhatsApp是一个全球级的 零噱头 (零广告,零创意,零游戏)产品,在SMS收费年代提供了一个免费的信息交互平台。当下,这个应用已被数目巨大的美国人使用,因此一旦有效户参加,即会在上面发现大量的亲朋好友。在手机如此遍及年代,WhatsApp绝对称得上弥补了美国交际网络上的空缺。鉴于其跨平台特性,以是每个人都可以使用它;值得关注的是,它还可以通报种种格式信息,好比共享地理位置、发送语音及视频等。WhatsApp有着非常精彩的国际化,使用手机号码作为验证信息、联系人列表作为交际图,因此你不需要邮箱验证、用户名及密码,更不需要提供信用卡等号码信息——“it just works”。

虽然WhatsApp有着如此的诱人特性,但是它仍旧不值190亿美元,并且对于互联网巨头来说,这样的特性模拟起来也并不庞杂。

WhatsApp之以是能卖190亿美元大概有多个缘故: 第1, 如Google CEO Larry Page所说 ;第2, WhatsApp已经威胁到Facebook ;第3,Facebook正在褪色,需要增补大量奇怪血液;第4, WhatsApp是你的电话簿 ;第5,WhatsApp可以收集到大量的元数据(虽然他们并未保存)。

正确的说,190亿美元收购WhatsApp是为了它的 4.5亿用户 ,为了它的日百万用户增长,为了它大概会有10亿用户的潜能——Facebook需要WhatsApp成为下一个10亿用户应用,固然只能成为它的一部分。同时,40美元一个用户的价格也并不离谱,特殊是以股票充当大部分金额。Facebook曾今使用 30美元每用户 的价格收购了Instagram,而 Twitter的每个用户更值110美元 。

Benedict Evans 做了一个非常棒的猜测 ,移动是一个万亿级的市场。WhatsApp通过天天发送180亿SMS消息(整个SMS系统天天发送!的消息也只有200亿条)搅乱了整个SMS市场,而这个市场有着超越1亿美元的税收。在智能手机接纳越发遍及的年代,WhasApp有着比Facebook更清楚的红利思绪。然而,在答应了零广告和零干预后,Facebook又会从何处得益?

在 移动应用业务 开发上有着很多风趣的用例, WhatsApp则常常被项目团队用来创建会话组,风投们也乐于将它作为生意业务流程中的对话工具。

Instagram被Kuwait用来出售绵羊 。

WeChat,WhatsApp的一个竞争者,在1月份推出了一个叫车服务;值得关注的是,仅仅一个月,这个应用上的 打车成交量就到达了2100万 。

贸易活动看起来确实很合适WhatsApp,但是它的用途显然另有更多——西班牙警员使用它来抓捕罪犯,意大利人们使用它来组织篮球角逐。

鉴于每个人都有手机并且消息应用已变得越发强盛、自由及便宜,贸易及别的种类应用程序已渐渐向移动端过渡。很多功能已不再只能用桌面或Web应用程序实现,消息应用已初露锋芒。

此中,很多应用已经对Facebook和Google产生威胁,桌面和网络皆将成为已往, 消息+移动将让整个系统愈加偏离这些巨头的王国 ,那么在这股移动的大潮中Facebook又该何去何从?

随着移动化的越发深入,Facebook的地位已愈发间不容发,用户的流逝显然已不可制止。桌面Web是Facebook后端全部特性的入口,它非常的肥胖、庞杂及陈旧,当下已经很少有人会嘻歡Facebook的UI。

在Facebook确定了“Mobile first”这个移动方案后 ,更深度的打磨被实行——不但创建差别用途的应用,同时也提供了多个具有类似功能和相互竞争的应用,这些应用偶然甚至不会共享相同的后台底子办法,好比:Messenger和WhatsApp,Instagram和Facebook图片应用。Paper也是Facebook一个限定功能候补入口,但是它体现得非常好。

在Mobile World Congress上,Facebook CEO Mark Zuckerberg发布了自己的见解, 他以为收购WhatsApp与Internet.org的愿景紧密相连 :

这个头脑就是创建一组底子互联网的免费服务——“互联网的911”,这大概是类似Facebook这样的交际网络服务、消息服务以及搜索服务等。将这些服务提供应那些支付得起却没有支付意识的用户,引诱其上瘾,让他们知道自己的重要性,从而更乐意使用更多的收费服务。

这是个恒久的目的,这个舞台里有充足多的长处去追逐,然而即时回报率却非常的低, Facebook正在这条道路上前行着

抛开这次生意业务不谈,WhatsApp毕竟是怎样用32个工程师来支持4.5亿的活泼用户,下面一起探索…… 服务4.5亿用户的高可靠架构
信息源

需要留意的是, WhatsApp的整体架构并未公开,这里仅仅是从差别信息源中获取差别的片断。Rick Reed的讲座重要分享了使用Erlang实现单服务器200万连接数,虽然很有价值,但是并不是整个应用架构。

一、 统计

这些统计是当下系统的一些数据,更多针对数据存储、消息、meta-clustering以及新参加的BEAM/OTP补丁。

  • 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!
ps:平台、产品、通用计划、服务器并发连接探索及履历总结请见

whatsapp技术架构

WhatsApp 只有 50 个人,服务环球 4.5 亿人,他们的服务器是怎么架构的?

他们有几多服务器? 他们服务器的摆设方案是怎样的?和国内哪个公司的最为靠近? 他们用的是谁家的云吗?
他们的服务器是自己建的,之前跟Softlayer的人聊过。听说是从两台Cloud Server开始,一个礼拜内转成了7台dedicated server。 Softlayer如今已经用Whatsapp来做卖点了,假如你要跟他们谈partnership他们就会搬出whatsapp来举例子。( Domain Performance Rank - Whatsapp的网页用到的全部IP都在SL)

Softlayer并不是太合适个人站长,针对个人的cloud / dedicated server 在价格和服务上都没啥竞争力。他们做的更像是服务器和网络批发商的观点,闻名的Host Gator / Linode等等都是批发他们家服务器的二道贩子。( Autonomous System : SoftLayer Technologies Inc. )

WhatsApp的事实进一步说明了一点:针对详细用例进行特别优化,完全可以Scale到亿级用户,根本不需要借助Google AppEngine Datastore / AWS Dynamo DB之类的服务。在后者的使用难度和价格都没竞争力的条件下,假如Scalibility也不黑白你不可,基本上宣告了这类服务的死亡。
WhatsApp服务器的尺度设置重要有两种,处置消息服务器,硬件设置:Intel E5-2690 + 256G RAM + 6 x 800GB SSD + 2 x 千兆以太网,处置音视频服务器,硬件设置:Intel E5-2690 + 128G RAM + 4T SATA + 2 x 千兆以太网。2012年已经在朝单服务器300万连接进行优化,根据如今4.5亿月活跃用户,预估服务器范围应该在150台以上。

WhatsApp的客户端使用XMPP 协媾和服务器 上使用 Er!lang 计划的模块(Chatd)互换消息,Chatd 将消息发送到SSD 上进行存储。对于图片,音频和视频,直接使用 HTTPS 协议上传和下载,此中
图片使用较快的SSD 存储,音频和视频使用较慢的SATA 存储。

由于Chatd模块侧重 io,业务逻辑不庞杂,根据网上宣布的信息,在2013年年初,服务器的信息峰值能到35万条每秒,用 Erlang实现是很好的一种技能选择。对于图片,音频和视频这种多媒体信息,WhatsApp使用 Yaws 提供 Web 服务,使用 DNS round-robin进行负荷分管,在客户端使用 FFmpeg 完成编码,存储使用FreeBSD UFS2。

WhatsApp的服务器,其焦点功能就是以电话号码为目标地点的消息转发,其存储也是用户不在线的暂时缓存,当用户吸收到消息后,出于葆护用户隐私的思量,服务器上的消息也就删除了。基于其服务模型的简单,50人服务4.5亿人才成为大概。假如WhatsApp的服务模型变成 Facebook 这么庞杂的交际种类,现有的处置和存储架构绝对是无法支持,同时用WhatsApp这个特例来否认现有的云服务也是不可取的。

方才听说WhatsApp宕机3小时,官方宣布的信息是路由器故障,个人以为WhatsApp的现有架构对于应付海量的短消息没有问题,但是应付海量的图片,音频和视频还存在优化的空间,这个大概也是这次宕机的缘故之一,幸亏 Facebook 收购WhatsApp后,应该能在这块帮到WhatsApp。

    WhatsApp服务器大概完全在Erlang中实现。

    实行后端消息路由的服务器系统是在Erlang中完成的。

    巨大的成绩是,使用很小的服务器空间就可以管理活动用户的数目。 团队的共鸣是,这很大程度上是由于Erlang。

    风趣的是,Facebook Chat于2009年用Erlang编写,但由于很难找到及格的程序员,他们放弃了它。

    WhatsApp服务器已从ejabberd启动

    Ejabberd是用Erlang编写的闻名的开源Jabber服务器。

    最初选择它是由于它的开放性,受到开发职员的好评,易于启动以及Erlang对于大型通讯系统的常期实用性的答应。

    接下来的几年用于重写和修改ejabberd的很多部分,包括从XMPP切换到内部开发的协议,重组代码库和重新计划一些焦点组件,并对Erlang VM进行很多重要修改以优化服务器性能。 。

    天天要处置500亿条消息,重点是制作一个可靠的有用系统。 赢利是一个值得关注的问题,它远未实现。

    系统运行状态的重要权衡指标是消息队列长度。 节点上全部历程的消息队列长度将得到连续监控,假如它们积存的积存超越预设阈值,则会发出警报。 假如一个或多个历程落伍,则会发出警报,这将提供指向下一个打击瓶颈的指针。

    通过将图像,音频或视频上传到HTTP服务器,然后将指向其内容的链接及其Base64编码的缩略图(假如实用)发送出去,来发送多媒体消息。

    通常天天都市推送一些代码。 通常,一天要多次,但是通常可以制止高峰时段。 Erlang有助于积极地将修复和功能投入生产。 热加载意味着可以推送更新,而无需重启或流量转移。 通常,再次通过热加载可以很快消除错误。 系统趋向于疏松耦合,这使得很轻易以增量方法推出变动。

    Whatsapp应用程序使用什么协议? WhatsApp服务器池的SSL套接字。 全部消息都市在服务器上列队,直到客户端重新连接以检索消息为止。 消息的成功检索将发送回whatsapp服务器,该服务器将该状态转发回原始发件人(它将!在消息旁边表现为“复选标志”图标)。 客户端担当邮件后,就会从服务器内存中扫除邮件

    Whatsapp的注册過逞怎样在内部进行? WhatsApp曾经根据电话IMEI号码创建用户名/密码。 近来变动了。 WhatsApp如今使用应用程序的一样平常请求发送唯一的5位数PIN。 然后,WhatsApp将SMS发送到指定的电话号码(这意味着WhatsApp!客户端不再需要在同一部电话上运行)。 然后,根据密码,该应用会向WhatsApp请求一个唯一的密钥。 该密钥用作未来全部呼唤的“密码”。 (此“永世”密钥存储在装备上)。 这也意味着注册新装备将使旧装备上的密钥无效。

本文网址: http://www.5bufan.com/p/20209291575_4610_1404135690/home