2014年3月22日星期六

[]whatsapp深度使用Erlang有感 | 系统技术非业余研究

本文自动转发自我的博客: http://www.haofengjing.org/2534.html

原创文章,转载请注明: 转载自系统技术非业余研究

本文链接地址: whatsapp深度使用Erlang有感

这么多年过去了,社区还在讨论erlang是不是小众语言,各种怀疑的时候,whatsapp已经把erlang用到了极致。

logo-text-ver-color

whatsapp是什么? 参见它的 官网

WhatsApp Messenger is a cross-platform mobile messaging app which allows you to exchange messages without having to pay for SMS.

更为搞笑的是 主要开发者Rick Reed(rr@whatsapp.com),之前在Yahoo!, SGI工作,有着深厚的系统性能的背景。

在2012年开发push服务器的时候:efsf2012-whatsapp-scaling

Joined WhatsApp in 2011,New to Erlang

完全是个新手。

在2013年开发多媒体支持系统的时候:reed-efsf2013-whatsapp

Joined server team at WhatsApp in 2011,No prior Erlang experience

2-3年后他已经是Erlang的最高级别的行家了。

从他的二篇ppt的内容来看, 他把erlang的特性发挥到了极致,利用到了它最好的vm、 集群基础设施、数据库mnesia, 消除了非常多的数据Scale、内存池和锁的问题, 提到的技术和修正点非常值得我们参考。

虽然大部分的解决方法我们在日常都差不多用过。但是他很系统的整理出来,用在商业系统了,这是个非常大的飞跃。

下面摘抄几个数据,希望能让继续怀疑erlang的人能重新思考下:

whatsapp后台架构以erlang为主: wa1 二百多万的长连接push服务器: wa4

whatsapp数据集mnesia的规模: wa2

生产系统的数据: wa3

每秒的消息数: wa6

媒体的报道:传Facebook与Whatsapp展开收购谈判: wa5

小结:任何系统开发到最后,都是依靠操作系统,硬件提供的能力,需要解决的问题都是一样的,没有捷径! hard working是必须的,依靠erlang团队做了大量的工作,这个为业务定制系统的工作可以变成轻松好多! 停止怀疑吧,加入这个阵营,收获不会少的。

祝玩得开心!


[]$190亿的背后 – WhatsApp架构分析笔记 | 行思錄 | Travel Coder

本文自动转发自我的博客: http://www.haofengjing.org/2531.html

就架构本身来看,WhatsApp (后简称WA, 哇……)的架构属于"实在是太简单了,没有太多分析的价值"。概括起来就是Erlang on FreeBSD through XMPP.

业务需求决定架构。WA用户从零增长到4.5亿月活的过程中基本没有遇到系统扩展性的问题「昨天宕机三个小时原因也不是系统性能的问题,而是路由器的问题」。一方面由于WA业务比较单一,另一方面也得益于对系统的持续优化。

WA的架构在发展过程中有两个比较有意思的阶段: 1. 从C200K到C2800K「C: 这里特指Connection」。 2. 多媒体处理系统升级与优化。

这两个阶段都是在Rick Reed牵头下完成的。这哥们是个比较有意思的人物:2011年从雅虎跳巢到WA「时机把握得真好!」,当他来到WA的时候,居然不知道Erlang是什么东东。然而,仅仅一年后就交出了一台服务器处理百万并发连接的答卷,两年后已经成为Erlang领域的顶尖专家。这哥们貌似很喜欢足球,两次系统优化都是足球夜激增的流量激发了他upgrade的念想:)。

从C200K到C2800K

优化前,一个节点的连接负载能力约为200K,并面临着用户连接增多时系统过载和失败等问题。系统优化的目标很明确:

  • 将一个节点连接负载能力提高到C1000K
  • 可应对软硬件错误/故障以及突发事件造成的连接激增

所采用的方法详见Rick Reed, Scaling to Millions of Simultaneous Connections, March 30 2012. 简单来说,就是把以前所有系统资源利用不合理以及有更高效解决方式的地方都fix了一遍,然后持续优化和改进。根据Rick Reed的数据,第一轮下来提高到了C1000K,第二轮下来提高到了C2000K,并成功顶住了C2800K的峰值。不过Rick Reed认为承受C3000K也是没有问题的。

一些启示:

  • Erlang拥有良好的SMP扩展性,并行优势很明显(24逻辑核上,>85%的利用率)
  • 系统的资源争用有时候会产生难以置信的内耗。从C200K到C2000K就是通过解决/优化资源争用问题完成的。
  • 对于使用频繁的函数,考虑使用更加高效的实现方式往往能收到"小处大为"的效果(WA中使用更加高效的cpu_timestamp,os:timestamp取代erlang:now。对于一个消息系统来说,这两个函数的优化很有意义)
  • 不要忘了客户端App的优化
  • 整个系统的性能取决于木桶最短的那根。很多时候,语言都很难成为最短的那根。当然,更没有必要因为WA是用Erlang构建的,你要把自己的系统转到Erlang上来。

多媒体处理系统升级与优化

最开始,系统是基于lighttpd + PHP. 为了让这个子系统具有更好的扩展性、稳定性以及用户体验,Rick对他进行了一次Erlang化改造。详细参见Rick Reed, March 21 2013。升级或的架构图如下图所示:

wa_mms

数据存储方面,垂直和水平都做了分片:

wa_db_sharding

新架构下的系统峰值性能:

  • 214M images in a day
  • 8.8K images/sec downloades
  • 29 Gb/sec output bandwidth

好啦,WA讲述的根本就不是Brian Acton屌丝逆袭的故事。它讲述的是Rick和Erlang的恋爱史。至此,移动端的IM布局基本也就不会发生大的变化了。在一次对Rick的采访中,有一个问题很有意思:

Mirko: Since you are working for the most used messaging system on the planet I have two non-technical questions. What is from your point of view the best thing introduced by digital communications? And on the other side, what do you miss from the "paper and pen" communication era?

Rick: Well we've come a long way from my first experience with digital communication, email on the arpanet. Today, I'm just a few taps on my smartphone away from instant communication with my family, friends, and coworkers, no matter where they are.

I think the downside is that because there are so many ways to communicate (phone, voicemail, email, messaging), you almost have to establish a mapping between each of the people and organisations in your life and how best to communicate with them. And if you get the mapping wrong, the mismatch between what you expect and they expect can cause all kinds of trouble.

小龙和企鹅看完会心一笑。


[]一周热点:领先Google 150年的数据可视化及WhatsApp架构解析-CSDN.NET

本文自动转发自我的博客: http://www.haofengjing.org/2529.html

大数据这一近年来才流行起来的技术,看似十分深奥,但是早在150年前人们就开始使用大数据分析赶走霍乱,利用"小猎犬号"超级计算机来基因测序解决了很多医学上的难题;不顾谷歌CEO阻拦,Facebook最终以190亿美元的天价收购了WhatsApp,Facebook真正看重还是WhatsApp会成为下一个10亿用户应用,IBM出手收购NoSQL数据库公司Cloudant……

1. 领先Google 150年的数据可视化和"不务正业"的超级计算机

谷歌应用数据分析流感疫情堪称经典,然而早在150年前,既有数据分析赶走霍乱的先例。Farr和Snow对霍乱有着完全不同的两套理论,而且证明的方法也完全不一样。Farr是一个沉迷于数据的统计学家,其大量的图表文档表明了霍乱和海拔有联系(他认为是瘴气的原因)。Snow是一名医生,他把注意力放在病人身上,其观察显示霍乱从胃部进入人体,这让他相信是摄取食物或水的问题,最后他把问题指向了公共水源。

基因科学其实也不仅是医学问题,超级计算机"小猎犬号"的加入让基因问题变成一个个"大数据"。这台超级计算机被命名为"小猎犬号"(很容易让人联想到达尔文在1831年那次著名的科学之旅),安置在伊利诺伊州Argonne国家实验室的理论与计算科学大厦,"小猎犬号"可应用于生物医学研究领域的计算、仿真和数据分析。

 

"小猎犬号"是Cray XE6超级计算机——它能够在短短2天内分析240个完整基因组

该团队指出,生产DNA序列成本的降低使整个基因组测序进度加快。但由于一次分析好几个基因组需要很大的计算量,这又带来了"计算瓶颈"的问题。而有了超级计算机以后不用再局限于一次只能观察一个基因组,它可以同时处理多个基因组。

2. 支撑4.5亿活跃用户的WhatsApp架构概览

不顾谷歌CEO阻拦,WhatsApp最终以190亿美元的价格花落Facebook。能获如此天价与其月4.5亿的活跃用户是分不开的,同样不可或缺的还有支撑每日数百亿消息的高可靠架构。

硬件:标准的面向用户服务器:

  • Dual Westmere Hex-core(24个逻辑CPU)
  • 100 GB RAM、SSD
  • Dual NIC(公共面向用户的网络、私有的后端 /分布)

产品

  • 聚焦消息传递。连接来自世界各地的用户,忽视他们的地理位置,无需支付高额费用,创始人Jan Koum还经常提起1992年在世界各地与家里人联系是多么的难。
  • 隐私。由Jan Koum制定,消息不会在服务器上储存,聊天记录也不会储存,目的就是不去了解用户隐私。不会保存用户姓名及性别,聊天记录只存储在电话上。

架构的其它详细信息请关注原文。

 

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

3. 当DDoS跨入400Gbps时代,那些来自孩子们的攻击该如何应对!

从2013年3月的300Gbps到2014年2月的400Gbps,DDoS攻击以惊人的速度进入200-400Gbps时代;然而通过KrebsOnSecurity了解到,在DDoS服务租赁者中存在大量的年轻人,他们期望通过破坏别人的网站或服务以炫耀自己,而KrebsOnSecurity在这周也受到一位15岁男孩的攻击,他称自己为"Mr. Booter Master"。而通过KrebsOnSecurity网站选择的安全公司Prolexic Technologies得知,就是这个15岁的孩子发起了一个接近200Gbps的攻击。

通过该安全公司还得知,这次攻击仅仅持续了10分钟左右,与其说是破坏不如说是演习和验证。通过知情人士还得知,攻击者的目的在于通过这种方式向Darkode论坛管理员证明他可以为社区贡献更多:类似"Mr. Booter Master"这个年龄段的攻击者还有很多,他们通过各种各样的方式证明自己的实力,但是无可否认的是他们的目的只有一个——为了娱乐!

 

从Arbor Networks得知,2013年NTP攻击得到了长足的发展,DDoS攻击已经步入200-400Gbps时代。需要注意的是,这点并不仅限于欧美等国家—— 2014春节期间,阿里云曾遭遇一场160Gbit/s DDoS攻击,虽然官方公布了这场博弈的结果,但是如果下方回帖网友使用的也是阿里云服务的话,情况似乎并不乐观。同时,不可否认的是,在200-400Gbps DDoS攻击数量级下,国内的防范之路还有很长一段要走。

4. 不差钱:30+收购案,170亿美元投资,IBM再度出手收购Cloudant

北京时间2月25消息:IBM宣布收购数据库即服务(DBaaS)供应商Cloudant,预计Cloudant的收购将在2014年第一季度完成。Cloudant一共只有大约60名员工,但却拥有2500多家客户,其中包括一些非常著名的公司比如三星、Adobe和诺基亚等。

此次收购案有助于夯实IBM在云计算领域的基础,但是Cloudant没有被直接投资者Rackspace收购的确让很多人大为不解,IBM的此番收购正好赶上Rackspace前CEO辞职不久,时间非常敏感。

 

 IBM CEO Ginny Rometty

这笔收购标志着IBM继续投资云计算和大数据。除了研究和开发的投资,公司在这个领域投资已经超过170亿美元,完成30个以上的收购。最初160亿美元是2015年的目标,公司已将预算提高到200亿美元。

IBM试图通过收购Cloudant利用全球移动设备用户。世界各地的移动电话用户每天产生5PB的数据,用户可以轻松地利用网络和设备访问这些数据,Cloudant帮助创建这些可扩展的应用程序

5. 英特尔至强E7 v2处理器:2倍性能提升,3倍内存容量,4倍I/O带宽

重塑数据中心一直是英特尔在服务器领域的远大目标,2014 年2月25日,为了进一步推动关键业务、数据分析等技术应用创新,英特尔在北京举办了主题为"洞察先机极智领航" 英特尔至强处理器 E7 v2产品发布会。

英特尔数据中心事业部副总裁兼数据中心市场部总经理 Shannon Poulin

本次发布会上,英特尔针对该创新产品在数据分析领域中的应用价值进行了详细解析。与RISC架构相比,英特尔至强E7 v2处理器能够将性能提升多至80%,并可将4年总体拥有成本降低80% 。此外,与前一代产品相比,E7 v2的性能、内存容量支持、 I/O 带宽及关键业务可靠性等方面都取得了重大突破:平均性能提升至2倍、3倍于上一代产品的内存容量支持、 高级RAS特性大幅度提升系统连续运行时间和可靠性。未来,全球各地的 21 家系统制造商,预计将会推出超过 40 个基于英特尔强至处理器 E7 v2 产品家族的平台 

6. AT&T联手IBM对抗AllSeen:"晚点和堵车"将成历史

电信巨头AT&T和IBM正在共同努力,利用物联网大潮,计划从城市和公用事业开始发力。AT&T拥有全球通信网,蓝色巨人拥有强大的软件技术来分析和可视化大量来自不同地方的传感器数据,当然它无与伦比的硬件技术也可以用来处理这些信息。

如果现在哪天上班不堵车,可能还真觉得不正常,你能想象在北京这样的大城市不堵车是什么情形吗?没有什么是做不到的,AT&T和IBM在物联网领域展开合作,并直接以城市的公用事业为发力点,打造智慧城市。此前IBM已经在都柏林和爱尔兰测试了公交车的准点到达技术,并取得不错的效果。

                

                                                  洛杉矶市中心的AT&T交换中心                    

AllSeen Alliance项目以开源项目 AllJoyn 为基础,后者首先由高通发起,其目标是让各种各样的设备、应用及服务都能通过各种在线或离线渠道(如WiFi、电线或以太网)进行连接。AllJoyn 不需要互联网连接,且设计为跨操作系统及平台连接。基于AllJoyn 框架的直接对等交互可极大丰富用户体验,用户将可以在目前享受到的基于云服务基础上进一步享受到附近物联网的好处。

7. 轻松搞定TB级数据,开源GraphLab突破人类图计算"极限值"

近日一家新公司的成立大大推动了开源项目GraphLab的发展,该公司由GraphLab的开发者组成,筹集资金为图数据集开发分析工具。GraphLab公司也将继续使用开源GraphLab"突破图计算的极限,努力创新"。 由于SFrames类似于Pandas(PyData)和R数据架构,数据科学家可以非常方便快速地使用它们,提高工作效率。

GraphLab的SFrame是一种趣味十足而低调神秘的工具,首次在Strata Santa Clara被揭开面纱。它基于磁盘,并通过二维表形式将GraphLab扩展到了表格数据。通过添加SFrame,用户可以利用GraphLab中许多处理图或表中数据的算法。更重要的是SFrame增加了GraphLab数据科学工作流的覆盖范围:它允许用户直接使用GraphLab对TB大小的数据集进行数据清洁或者创建新的功能,SFrame性能可以通过增加内核实现线性扩展。

更多云热点内容:特种作战,纽约极客企图建造


[]支撑4.5亿活跃用户的WhatsApp架构概览-CSDN.NET

本文自动转发自我的博客: http://www.haofengjing.org/2527.html

【编者按】以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!

[]WhatsApp 只有 50 个人,服务全球 4.5 亿人,他们的服务器是怎么架构的? - 知乎

本文自动转发自我的博客: http://www.haofengjing.org/2525.html

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

他们有多少服务器? 他们服务器的部署方案是怎样的?和国内哪个公司的最为接近? 他们用的是谁家的云吗?
按票数排序按时间排序

10 个回答