Architecture 谷歌的架构&x27;s分布式监控模型

Architecture 谷歌的架构&x27;s分布式监控模型,architecture,erlang,distributed,apache-zookeeper,erlang-supervisor,Architecture,Erlang,Distributed,Apache Zookeeper,Erlang Supervisor,我在网上读到一篇有趣的帖子,其中一名谷歌员工讨论说,谷歌不会从Erlang的监管模式中受益,因为他们在基础设施中构建了一个等效的监管模式: (完全披露:我在谷歌工作,也喜欢erlang)erlang拥有非常棒的设施 对于健壮性和并发性。它没有的是类型安全性 而且它在处理文本时表现得很糟糕。所以如果你 不要关心这两件事,只关心健壮性 并发性很好,Erlang也很好。进行了内部讨论 关于Erlang,但结果是。我们基本上已经 在我们的基础架构中复制了Erlangs监控模型,只有我们 它适用于所有语言

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

(完全披露:我在谷歌工作,也喜欢erlang)erlang拥有非常棒的设施 对于健壮性和并发性。它没有的是类型安全性 而且它在处理文本时表现得很糟糕。所以如果你 不要关心这两件事,只关心健壮性 并发性很好,Erlang也很好。进行了内部讨论 关于Erlang,但结果是。我们基本上已经 在我们的基础架构中复制了Erlangs监控模型,只有我们 它适用于所有语言,而Erlang在这方面没有提供任何好处 为我们表演

来源

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

问题

  • 谷歌监管模式的架构是什么
  • 对于谷歌发布的许多创新,后来出现了提供相同功能的开源软件(例如Google BigTable->HBase、MapReduce->Hadoop等)。是否履行了上文提到的谷歌监管基础设施的所有职责

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

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

    • 由于受到内存管理单元的保护,进程在UNIX中具有隔离性
    • 崩溃进程可以重新启动,可能是在另一台机器上
    • UNIX是一个众所周知的目标
    除此之外,谷歌还构建了基础设施,允许您“插入”顺序系统,以便轻松实现分布式。“胖乎乎的锁管理器”出现在这里

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

    这句话也有很多地方完全错了:

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

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

    没有人回答这个问题的原因是它很难。谷歌的一名员工可能因为IP泄露而无法做到这一点。非谷歌员工只能指向有关其基础设施的相关文件


    尽管如此,您仍然需要在今天任何更大的系统设置中使用分发功能。但问题是“你是通过模仿谷歌5-10年前的做法得到这个结果的吗?”

    问题1和3似乎离题(分别询问离题资源和软件建议),总体主题似乎有点宽泛。@littlebbytables-感谢反馈,我重新排列了问题顺序,我在想,我该如何改写这些问题,使它们与主题保持一致。如果没有,我将删除它们,看起来它可能提供与Netflix参展商类似的管理分布式应用程序的功能。当它所监视的应用程序在Stratos管理的盒式磁带(盒式磁带=应用程序容器)中运行时,框架还扮演监督者的角色。请看这里以了解更多信息。免责声明,我是ApacheStratos(孵化)的提交人。在我的公司,我们参与了一个流程级监管框架项目,该项目在Unix(部分在Windows)流程级工作,与“问题”中所说的谷歌正在做的事极为相似。在操作系统级别工作可以让我们做一些好事,但它带来的约束比我们最初意识到的要多。然后我们(重新)发现了Erlang,并意识到我们正在重新发明轮子。我们现在面临的约束是使用ErlangVM,事实证明这是一个很好的折衷。