Google分布式监管模型的架构

Chr*_*now 6 architecture erlang distributed apache-zookeeper erlang-supervisor

我在线阅读了一篇有趣的帖子,Google员工讨论了Google不会从Erlang的监管模式中受益,因为他们已经在他们的基础架构中构建了一个等效的监管模型:

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

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

尽管在网上搜索,我找不到关于他们的监督模式的任何信息(我最有​​可能使用错误的搜索条件进行搜索).

问题:

  1. Google监管模式的架构是什么?
  2. 对于谷歌发布的许多创新,后来开发出了提供相同功能的开源软件(例如Google BigTable - > HBase,MapReduce - > Hadoop等).Netflix的参展商是否履行了上述报价中提到的Google监管基础设施的所有角色?

I G*_*ERS 14

我们对Google的内部基础架构知之甚少.你唯一可以看到的就是在谷歌工作,或者通过阅读论文.

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

  • 由于受到内存管理单元的保护,进程在UNIX中具有隔离.
  • 可以在另一台计算机上重新启动崩溃进程.
  • UNIX是众所周知的目标.

除此之外,Google还构建了基础架构,允许您"插入"顺序系统,以便轻松地进行分发.这里想到了"胖乎乎的锁经理".

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

引用也有很多错误:

  • Erlang是一种安全的语言,在某种意义上,程序将进行计算值或通过错误进行故障,通常会导致所述进程崩溃.在未定义的行为意义上,程序无法"出错".Erlang确实支持静态类型的变体,即成功键入.然而,类型强制完全在运行时.Erlang没有丰富的类型系统,就像有些人称之为"强类型".

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

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

尽管如此,您现在需要在任何更大的系统设置中使用分发功能.但问题是"你是否通过复制谷歌在5 - 10年前做过的事情来解决这个问题?"

  • 在我的公司,我们深入研究了一个进程级监督框架项目,该项目在 Unix(以及部分 Windows)进程级运行——与这个问题所说的 Google 正在做的事情非常相似。在操作系统级别工作让我们可以做一些好事,但它带来的限制比我们最初意识到的要多。然后我们(重新)发现了 Erlang,并意识到我们正在重新发明轮子。我们现在面临的限制是使用 Erlang VM,事实证明这是一个很好的权衡。 (2认同)