WhatsApp 仅用 32 名工程师就能支持每天 500 亿条消息的 8 个原因

NK 2024-01-13 10:53:00

 

这篇文章概述了 WhatsApp 联合创始人 Jan Koum 的令人难以置信的创业故事、以及用于扩展 WhatsApp 的工程技术。想要研究其可扩展性模式的朋友不妨分享这篇文章。

 

 

2008 年 1 月,美国加利福尼亚州。一位名为 Jan Koum 的雅虎工程师,在申请 Facebook 职位时被拒了。

 

这当然不是故事的终点——他第二年入手了一部 iPhone,并立即认识到新 App Store 的巨大潜力。因此,他决定与雅虎的一些前同事一起开发一款即时通讯工具,并将其命名为 WhatsApp,据称这个名字是他在朋友家的厨房讨论了几个小时就确定的。WhatsApp 背后的愿景是取代昂贵的短信。

 

WhatsApp 每天有 100 万人注册,其增长速度简直令人难以置信。但更为人难以想象的是:WhatsApp 每天需要支持来自 4.5 亿日活跃用户的500 亿条消息,他们却只用了32 名工程师就做到了。

 

尽管产品爆炸性增长是一个好现象,但 Jan Koum 和 WhatsApp 团队必须采用最佳工程实践来克服挑战。

 

WhatsApp 满足极端可扩展性的工程实践的 8 点原则如下。

 

一、单一职责原则

 

他们只将产品的重点放在核心功能上——消息传递,并且没有费心建立广告网络或社交媒体平台。

 

图片

单一责任原则

 

他们还不惜一切代价消除了功能蔓延。当你向产品添加过多的功能时,就会发生功能蠕变。并使其难以使用。此外,他们更注重 WhatsApp 的可靠性。

 

二、技术栈

 

他们使用 Erlang 构建 WhatsApp 服务器的核心功能。因为它:

 

  • 体积小,可扩展性高

  • 并且支持热加载

 

线程是 Erlang 的原生特性。但在Java或C++中,线程属于操作系统。所以Erlang中没有必要保存整个CPU状态。这使得上下文切换更便宜。

 

热加载可以更轻松地部署代码更改,而无需重新启动服务器;或者流量重定向。简而言之,热加载提供了高可用性。

 

三、 为什么要重新发明轮子?

 

不要重新发明轮子——要么使用开源,要么购买商业解决方案。

 

图片

不要重新发明轮子

 

Ejabberd 是一个用 Erlang 编写的开源实时消息服务器。

 

他们在 ejabberd 之上构建了 WhatsApp 。他们还重写了一些 ejabberd 核心组件来满足他们的需求。此外,WhatsApp 利用 Google Push 等第三方服务来提供推送通知。

 

四、跨领域的关注

 

他们非常重视跨领域的关注,以提高产品质量。横切关注点是影响产品许多部分的事情。并且很难分开。例如,监视和警报服务的运行状况。

 

图片跨领域关注点

 

他们通过持续集成和持续交付改进了软件开发流程;持续集成是将代码更改定期合并到中央存储库的过程;持续交付是将代码部署到测试或生产环境的过程。

 

五、可扩展性

 

WhatsApp使用对角缩放来降低成本和操作复杂性;水平扩展是增加资源池中机器数量的过程;垂直扩展是增加现有机器容量(例如 CPU 或内存)的过程;对角线缩放是水平和垂直缩放的混合。计算资源可以垂直和水平添加。

 

图片

可扩展性

 

他们在 FreeBSD 操作系统上运行 WhatsApp 服务器。因为他们之前在 Yahoo 工作时就有过使用 FreeBSD 的经验。此外,FreeBSD 还提供了可靠的网络堆栈。

 

他们还对 FreeBSD 进行了微调,以容纳每台服务器超过 200 万个连接。并修改了文件、套接字等内核参数。

 

他们过度配置服务器来处理突发的流量峰值并为故障留出空间。例如,网络分区或硬件故障等故障。

 

六、飞轮效应

 

他们测量了 CPU、上下文切换和系统调用等指标。然后找出并消除瓶颈。_ 他们定期这样做。持续的反馈周期极大地提高了 WhatsApp 的性能。

 

图片

持续反馈循环

 

七、质量测试

 

WhatsApp 团队使用负载测试来识别单点故障。负载测试是测量系统在预期负载下性能的过程。

 

图片

负载测试

 

他们使用人工生产流量和 DNS 配置更改来进行负载测试。

 

八、团队规模保持克制

 

随着团队规模的扩大,工程师之间的沟通路径呈二次方增长。这是生产力下降的一个原因。

图片

工程师之间的沟通路径

 

因此他们保持了较小的团队规模——32名工程师。

 

后记:WhatsApp被收购

 

WhatsApp 是市场上最成功的即时通讯工具之一。2014 年 2 月,拒绝给 Jan Koum 发放 Offer 的 Facebook ,最终以高达 190 亿美元的价格收购了 WhatsApp。

 

据福布斯报道,到 2023 年,Jan Koum 的净资产将达到 140 亿美元。

 

>>>>

原文链接

 

  • http://newsletter.systemdesign.one/p/whatsapp-engineering?action=share

 

作者丨NK
来源丨公众号:51CTO技术栈(ID:blog51cto)
dbaplus社群欢迎广大技术人员投稿,投稿邮箱:editor@dbaplus.cn
最新评论
访客 2024年04月08日

如果字段的最大可能长度超过255字节,那么长度值可能…

访客 2024年03月04日

只能说作者太用心了,优秀

访客 2024年02月23日

感谢详解

访客 2024年02月20日

一般干个7-8年(即30岁左右),能做到年入40w-50w;有…

访客 2023年08月20日

230721

活动预告