本文自动转发自我的博客:
http://www.haofengjing.org/2525.html
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 协议和服务器 上使用 Erlang 设计的模块(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。
知乎用户,OOP ⊢ FP
我觉得WhatsApp的架构并没有什么值得研究的地方。 WhatsApp的逻辑实在是太简单了。为了绕过TCP协议的缺陷,图片什么的都是走Out-of-Band的,这也是聊天服务的常见做法了。又比如XMPP协议很悲剧的一个地方是,每次登录都有可能花很多时间在同步联系人列表上,导致消息可能要过很久才过来,对服务端的压力也挺大的,对比MSN很早就改用Out-of-Band方式同步联系人列表了,而WhatsApp根本就不用解决这个问题,因为WhatsApp不仅不支持多点登录,连换个手机登录都很麻烦,它就直接读你手机通讯录了。WhatsApp还主要靠客户端重试来保证消息发送成功率,你看见每条消息边上的两个勾了吧。所以,剩下的就只是performance tuning的问题了。WhatsApp是用Erlang来开发的,Erlang内置的各种运行期状态检查工具不要太好。 其实WhatsApp用户数也不是很多,还不如腾讯家的微信,微信有超过6亿用户呢。特别是微信业务逻辑可比WhatsApp复杂多了,这不算什么,因为微信开发团队人数也多啊,但最最厉害的是微信后台是用C++开发的 ... 就是这样
为什么大家都只讨论技术架构? 我特别想了解的是如此小的团队是如何完成全球范围内的运营推广的?
1、总趋势是软硬件深度解耦 2、硬件的架构趋于标准稳定,以软件(业务)为导入形成架构层次 3、最重要的是软件如何优化,可以高效利用硬件 4、软件交互形态充分考虑服务器的网络瓶颈
唐华斌,严格说来我不是做技术的,我只是致力于用…
没有评论:
发表评论