您当前的位置:首页 > 电脑百科 > 程序开发 > 架构

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

时间:2023-10-12 10:57:43  来源:51CTO  作者:
这篇文章概述了 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 点原则如下。

1、单一职责原则

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

WhatsApp 仅用 32 名工程师就能支持每天 500 亿条消息的八个原因单一责任原则

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

2、技术栈

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

  • 体积小,可扩展性高
  • 并且支持热加载

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

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

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

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

WhatsApp 仅用 32 名工程师就能支持每天 500 亿条消息的八个原因不要重新发明轮子

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

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

4、跨领域的关注

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

WhatsApp 仅用 32 名工程师就能支持每天 500 亿条消息的八个原因跨领域关注点

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

5、可扩展性

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

WhatsApp 仅用 32 名工程师就能支持每天 500 亿条消息的八个原因可扩展性

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

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

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

6、飞轮效应

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

WhatsApp 仅用 32 名工程师就能支持每天 500 亿条消息的八个原因持续反馈循环

7、质量测试

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

WhatsApp 仅用 32 名工程师就能支持每天 500 亿条消息的八个原因负载测试

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

8、团队规模保持克制

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

WhatsApp 仅用 32 名工程师就能支持每天 500 亿条消息的八个原因工程师之间的沟通路径

 

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

——后记——

WhatsApp被收购

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

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

原文链接:https://newsletter.systemdesign.one/p/whatsapp-engineering?actinotallow=share



Tags:WhatsApp   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
WhatsApp 仅用 32 名工程师就能支持每天 500 亿条消息的八个原因
这篇文章概述了 WhatsApp 联合创始人 Jan Koum 的令人难以置信的创业故事、以及用于扩展 WhatsApp 的工程技术。想要研究其可扩展性模式的朋友不妨分享这篇文章。2008 年 1...【详细内容】
2023-10-12  Search: WhatsApp  点击:(361)  评论:(0)  加入收藏
WhatsApp推广竟然有这么多门道,你知道多少?
对于外贸跨境人来说,WhatsApp是必不可少的社交工具。确实,WhatsApp是一个全球性的社交平台,其在国际上的地位相当于国内的微信,而且用户体量比微信大了很多,全球月活超过20...【详细内容】
2023-03-13  Search: WhatsApp  点击:(230)  评论:(0)  加入收藏
WhatsApp有哪些功能
WhatsApp是一款非常受欢迎的即时通讯应用程序,其提供了许多功能,包括以下几个方面:1、发送文字、语音、图片、视频和文件用户可以发送各种类型的信息和文件,包括文本、语音、照...【详细内容】
2023-03-12  Search: WhatsApp  点击:(427)  评论:(0)  加入收藏
WhatsApp增加了代理支持,让用户在互联网被封锁时也能保持在线
布莱恩·林恩这张图片显示的是WhatsApp的标志即时通讯服务软件WhatsApp增加了一种辅助工具,该辅助工具帮助其用户在互联网遭到封锁时也能保持在线。这家由Facebook母公...【详细内容】
2023-01-18  Search: WhatsApp  点击:(491)  评论:(0)  加入收藏
WhatsApp Business 的会话营销:权威指南
虽然相对较新,但会话营销已成为许多品牌营销策略的最前沿。您如何在与买家的 WhatsApp 沟通中实施它?以下是您需要了解的有关 WhatsApp Business 会话营销的所有信息。 在本...【详细内容】
2022-10-10  Search: WhatsApp  点击:(403)  评论:(0)  加入收藏
WhatsApp群发官方接口号最全运营技巧指南
1、每条模板的“标题”不要有关联性,不要有重复性,可以结合文案内容写,如:文案中的单词+数字组合“标题”虽然不在发送消息中呈现,但是不代表不重要。可以按照发送内容的文案提炼...【详细内容】
2022-10-08  Search: WhatsApp  点击:(442)  评论:(0)  加入收藏
如何搜索 WhatsApp 聊天消息
试图在您庞大的 WhatsApp 聊天日志中查找特定消息?有两种搜索方式,因此您可以快速找到您要查找的内容。如果您不确定对话的对象是谁,您可以从“聊天”主窗口搜索整个存档。只需...【详细内容】
2022-08-19  Search: WhatsApp  点击:(477)  评论:(0)  加入收藏
如何正确使用WhatsApp
一、WhatsApp是什么whatsapp是Facebook下面的一款跨平台的即时通讯软件,就好比我们国内的微信一样可以发送文字、视频、图片等,非常的方便,对于一些老外,运用好这个工具是可以让...【详细内容】
2022-08-17  Search: WhatsApp  点击:(3086)  评论:(0)  加入收藏
一键批量把联系人号码添加导入WhatsApp通讯录
做外贸的朋友经常要用到的即时通讯工具就是WhatsApp,你是否还在手动一个个将联系人添加到WhatsApp通讯录?如果你觉得手动输入太麻烦,那你找对地方了,下面详细讲解如何把联系人号...【详细内容】
2022-08-15  Search: WhatsApp  点击:(960)  评论:(0)  加入收藏
Whatsapp在线但是不想被打扰?这几个方法能帮您有效隐身
通过 WhatsApp 等在线应用程序交换消息已成为大多数人的必需品。但是有时您出于各种原因不想被看到使用此聊天应用程序,也许您不想被其他人聊天的到来打扰。事实证明,WhatsApp...【详细内容】
2022-08-12  Search: WhatsApp  点击:(557)  评论:(0)  加入收藏
▌简易百科推荐
对于微服务架构监控应该遵守的原则
随着软件交付方式的变革,微服务架构的兴起使得软件开发变得更加快速和灵活。在这种情况下,监控系统成为了微服务控制系统的核心组成部分。随着软件的复杂性不断增加,了解系统的...【详细内容】
2024-04-03  步步运维步步坑    Tags:架构   点击:(5)  评论:(0)  加入收藏
大模型应用的 10 种架构模式
作者 | 曹洪伟在塑造新领域的过程中,我们往往依赖于一些经过实践验证的策略、方法和模式。这种观念对于软件工程领域的专业人士来说,已经司空见惯,设计模式已成为程序员们的重...【详细内容】
2024-03-27    InfoQ  Tags:架构模式   点击:(13)  评论:(0)  加入收藏
哈啰云原生架构落地实践
一、弹性伸缩技术实践1.全网容器化后一线研发的使用问题全网容器化后一线研发会面临一系列使用问题,包括时机、容量、效率和成本问题,弹性伸缩是云原生容器化后的必然技术选择...【详细内容】
2024-03-27  哈啰技术  微信公众号  Tags:架构   点击:(10)  评论:(0)  加入收藏
DDD 与 CQRS 才是黄金组合
在日常工作中,你是否也遇到过下面几种情况: 使用一个已有接口进行业务开发,上线后出现严重的性能问题,被老板当众质疑:“你为什么不使用缓存接口,这个接口全部走数据库,这怎么能扛...【详细内容】
2024-03-27  dbaplus社群    Tags:DDD   点击:(11)  评论:(0)  加入收藏
高并发架构设计(三大利器:缓存、限流和降级)
软件系统有三个追求:高性能、高并发、高可用,俗称三高。本篇讨论高并发,从高并发是什么到高并发应对的策略、缓存、限流、降级等。引言1.高并发背景互联网行业迅速发展,用户量剧...【详细内容】
2024-03-13    阿里云开发者  Tags:高并发   点击:(6)  评论:(0)  加入收藏
如何判断架构设计的优劣?
架构设计的基本准则是非常重要的,它们指导着我们如何构建可靠、可维护、可测试的系统。下面是这些准则的转换表达方式:简单即美(KISS):KISS原则的核心思想是保持简单。在设计系统...【详细内容】
2024-02-20  二进制跳动  微信公众号  Tags:架构设计   点击:(36)  评论:(0)  加入收藏
详解基于SpringBoot的WebSocket应用开发
在现代Web应用中,实时交互和数据推送的需求日益增长。WebSocket协议作为一种全双工通信协议,允许服务端与客户端之间建立持久性的连接,实现实时、双向的数据传输,极大地提升了用...【详细内容】
2024-01-30  ijunfu  今日头条  Tags:SpringBoot   点击:(9)  评论:(0)  加入收藏
PHP+Go 开发仿简书,实战高并发高可用微服务架构
来百度APP畅享高清图片//下栽のke:chaoxingit.com/2105/PHP和Go语言结合,可以开发出高效且稳定的仿简书应用。在实现高并发和高可用微服务架构时,我们可以采用一些关键技术。首...【详细内容】
2024-01-14  547蓝色星球    Tags:架构   点击:(115)  评论:(0)  加入收藏
GraalVM与Spring Boot 3.0:加速应用性能的完美融合
在2023年,SpringBoot3.0的发布标志着Spring框架对GraalVM的全面支持,这一支持是对Spring技术栈的重要补充。GraalVM是一个高性能的多语言虚拟机,它提供了Ahead-of-Time(AOT)编...【详细内容】
2024-01-11    王建立  Tags:Spring Boot   点击:(124)  评论:(0)  加入收藏
Spring Boot虚拟线程的性能还不如Webflux?
早上看到一篇关于Spring Boot虚拟线程和Webflux性能对比的文章,觉得还不错。内容较长,抓重点给大家介绍一下这篇文章的核心内容,方便大家快速阅读。测试场景作者采用了一个尽可...【详细内容】
2024-01-10  互联网架构小马哥    Tags:Spring Boot   点击:(115)  评论:(0)  加入收藏
站内最新
站内热门
站内头条