6

我在网上阅读了一篇有趣的帖子,其中一位谷歌员工讨论说谷歌不会从 Erlang 的监督模型中受益,因为他们已经在他们的基础设施中构建了一个等效的监督模型:

(完全披露:我在 google 工作,也喜欢 erlang) Erlang 具有出色的健壮性和并发性。它不具备类型安全性,并且在以高性能方式处理文本方面非常糟糕。因此,如果您不关心这些事情中的任何一个而只关心健壮性和并发性,那么 Erlang 就很棒。这里有关于 Erlang 的内部讨论,但结果是。我们已经在我们的基础设施中基本上复制了 Erlangs 监督模型,只是我们对所有语言都这样做了,而 Erlang 并没有为我们提供任何性能优势。

来源http ://erlang.org/pipermail/erlang-questions/2013-August/075135.html

尽管在网上搜索,但我找不到任何关于他们监督模型的信息(很可能我使用了错误的搜索词进行搜索)。

问题

  1. 谷歌的监督模型架构是怎样的?
  2. 对于 Google 发布的许多创新,后来也出现了提供相同功能的开源软件(例如 Google BigTable -> HBase、MapReduce -> Hadoop 等)。Netflix 的参展商是否履行了上述引述中提到的谷歌监管基础设施所期望的所有角色?
4

1 回答 1

14

我们对谷歌的内部基础设施知之甚少。你唯一能看到的就是在谷歌工作,或者通过阅读论文。

Google 使用的模型是在 UNIX 进程级别进行分发和监督。出于多种原因,这是有道理的:

  • 由于内存管理单元的保护,进程在 UNIX 中具有隔离性。
  • 可能在另一台机器上重新启动崩溃的进程。
  • UNIX 是一个众所周知的目标。

最重要的是,谷歌构建了允许你“插入”顺序系统的基础设施,以便轻松地使它们分布。这里想到了“胖乎乎的锁管理器”。

相比之下,Erlangs 模型也是关于保护的,但适用于在相同内存空间中运行或通过 TCP 套接字通信的轻量级进程。它提供了自己的生态系统来处理监督和分配。因此,虽然表面上的问题相同,但细节却不同。

这句话也有一些完全错误的地方:

  • Erlang 是一种安全的语言,因为程序要么会继续计算值,要么会因错误而出错,这通常会导致所述进程崩溃。在未定义行为的意义上,程序不可能“出错”。Erlang 确实支持静态类型的一种变体,即成功类型。然而,类型强制完全在运行时。Erlang 没有像某些人所说的“强类型”那样丰富的类型系统。

  • Erlang 的字符串处理速度非常快。我不知道这个神话是从哪里来的。使用 Erlangs 字符串处理需要更多的知识,但它具有明显的优势,即它排除了在处理其他语言的字符串时出现的许多典型错误。

没有人回答这个问题的原因是它很难。由于 IP 泄漏,谷歌员工可能无法做到这一点。非 Google 员工只能指向有关其基础架构的相关文件。

不过可以说,您今天需要在任何更大的系统设置中使用分发功能。但问题是“你是否通过复制谷歌 5 到 10 年前所做的事情来得到这个?”

于 2014-04-08T10:46:22.430 回答