WhatsApp 如何在只有 50 名工程师的情况下扩展到 10 亿用户
微wx笑 2021-11-28【见闻】 9 0关键字: WhatsApp
2016 年,WhatsApp 的用户超过 10 亿,并有以下负载统计数据每天发送 420 亿条消息每天发送 16 亿张图片每天发送 2.5 亿个视频他们仅用 50 名工程师就设法达到了这种规模。这是
2016 年,WhatsApp 的用户超过 10 亿,并有以下负载统计数据
每天发送 420 亿条消息
每天发送 16 亿张图片
每天发送 2.5 亿个视频
他们仅用 50 名工程师就设法达到了这种规模。
这是对使这成为可能的工程文化和技术堆栈的深入了解。
工程文化
WhatsApp 的工程文化包含 3 个主要原则
保持小事
保持简单
一心一意专注于使命
保持小事
WhatsApp 有意识地将工程人员减少到只有大约 50 名工程师。
单个工程团队也很小,由 1 到 3 名工程师组成,每个团队都有很大的自主权。
在服务器方面,WhatsApp 更喜欢使用较少数量的服务器,并在最大程度上垂直扩展每个服务器。
他们之前的目标是让每台服务器拥有 100 万用户(但随着他们向应用程序添加更多功能以及用户在每个用户的基础上产生更多活动,这变得更加困难)。
拥有更少数量的服务器意味着更少的事情发生,这使得团队更容易处理。
软件方面也是如此,他们限制了生产中系统和组件的总数。
这意味着需要开发、部署和支持的系统更少。
没有多少系统/组件被开发出来然后进入维护模式(最终成为孤儿,直到出现问题)。
保持简单
WhatsApp 使用了Just Enough Engineering的口号。
他们避免对系统和组件进行过度投资。
相反,他们专注于构建足够的可扩展性、安全性和可靠性。
他们做出技术选择的关键因素之一是“最简单的方法是什么?”
此外,除非完全有必要,否则他们会避免投资于自动化。
一心一意专注于使命
WhatsApp 的产品设计非常专注。
它致力于提供具有出色 UI 的核心通信应用程序。
他们避免了额外的花里胡哨,并且不实施并非专门针对核心通信的功能。
更简单的产品使其更易于维护和扩展。
技术栈
技术栈围绕着 3 个核心组件:Erlang、FreeBSD 和 SoftLayer。
二郎
Erlang 是 WhatsApp 后端系统的首选编程语言。
Erlang 从一开始就是为并发设计的,容错是该语言的一流特性。
您可以在此处阅读有关 Erlang 容错的更多信息。
Erlang 的开发人员生产力也非常高。但是,它是一种函数式语言,因此如果您不熟悉范式,则需要一点时间来适应。
该语言非常简洁,只需很少的代码行就可以轻松完成任务。
该OTP(开放电信平台)是开源中间件,库和工具Erlang的集合。
WhatsApp 尽量避免依赖,但他们确实使用了 Mnesia,这是一个分布式数据库,它是 OTP 的一部分。
Erlang 还带来了热插拔代码的能力。您可以获取新的应用程序代码并将其加载到正在运行的应用程序中,而无需重新启动应用程序。
这使得迭代周期非常快,并允许 WhatsApp 发布快速修复程序并为其服务提供极长的正常运行时间。
要确切了解 WhatsApp 的后端是如何使用 Erlang 构建的,您可以从 2018 年开始观看此演讲。
FreeBSD
FreeBSD 是 WhatsApp 用于其服务器的操作系统。
使用 FreeBSD 的决定是由 WhatsApp 的创始人根据他们之前在 Yahoo! 的经验做出的。
创始人(以及许多早期团队)都曾经是 Yahoo! 的一部分,在那里广泛使用 FreeBSD。
要确切了解 WhatsApp 如何使用 FreeBSD,您可以观看此演讲。
请注意,谈话是从 2014 年开始的,所以现在有些东西可能已经过时了。
软层
SoftLayer 是 WhatsApp 在 2016 年使用的托管平台。
他们选择 SoftLayer 有两个主要原因
FreeBSD 作为一流操作系统的可用性。
订购和操作裸机服务器的能力。
但是,SoftLayer 归 IBM(IBM 公共云的一部分)所有,WhatsApp 已从 SoftLayer 移出,转而使用 Facebook 的基础架构。
他们在2017 年进行了转型。
用于提高可扩展性的工具和技术
您可以在此处查看有关 WhatsApp 工程的完整演讲。
从这篇关于 WhatsApp 工程的高可扩展性帖子中获取更多具体细节。
转自:https://www.quastor.org/p/how-whatsapp-scaled-to-1-billion
本文为转载文章,版权归原作者所有,不代表本站立场和观点。
上一篇:网盘“无差别速率”产品来了
下一篇:如何快速学习新的编程语言和框架