📜  WhatsApp 的 55 名工程师如何管理 10 亿用户?

📅  最后修改于: 2021-10-19 08:38:40             🧑  作者: Mango

截至 2017 年 2 月,WhatsApp 在全球拥有 12 亿用户。有没有想过 WhatsApp 仅 55 名工程师的团队如何能够管理 10 亿用户?

一个简单的答案-> Erlang
Erlang 是一种函数式语言范式,用于 WhatsApp 的完整后端堆栈。 WhatsApp 基本上使用 ejabberd XMPP 应用程序服务器作为 WhatsApp messenger 的后端实现,这是一个用 Erlang 开发的开源项目。

现在 Erlang 或 ejabberd 服务器的实现有什么特别之处?此外,再深入一点,在 Erlang 和其他语言中创建进程的方式存在巨大差异,这就是 Erlang 中进程如此轻量级的原因。

  • 海量可扩展性:它具有海量并发性,在一个节点上可以处理多达 2、000、000 个用户
  • 容错:在实时系统中,我们知道会发生错误,事情会崩溃,erlang 工程师也是如此。为了防止这种情况,Erlang 有强大的工具来最小化错误并尽早从中恢复。
  • OS 创建的进程: Erlang 进程(称为绿色线程)由 Erlang VM 创建,而不是由 OS 创建
  • 上下文切换:在进程之间切换,一个进程知道它切换到的进程的Pid,所以没有调度器的作用,因此是O(1)操作。
  • 进程隔离:进程是完全隔离的,因此不需要实现互斥锁来防止死锁情况。

上面提到的可扩展性是通过 Erlang 系统创建进程的方式获得的。

Erlang 进程的以下特性有助于它实现如此高的可扩展性:

  1. 它们是轻量级的(动态增长和收缩)
  2. 他们创造和破坏的速度很快
  3. 调度开销非常低
  4. 进程之间没有共享空间,它们唯一的交流方式是通过消息传递

你可以这样扩展思路——Erlang VM是由一个OS进程操作的,Erlang VM可以根据需要创建任意多个进程,所以一个OS进程控制了多个Erlang进程,这就是为什么操作系统没有开销的原因一切都由 Erlang 虚拟机处理。
由于您需要非常少的系统来处理数十亿用户,因此您需要更少的工程师。