为什么 Erlang/OTP 不使用多个主管(或者使用)?

Why doesn't Erlang/OTP use several supervisors (or does it)?

查看 OTP 的文档,似乎设置这些系统的典型方法是让一个主管监视多个工作人员:

http://www.erlang.org/doc/design_principles/sup_princ.html

在机器 运行 主管崩溃或与工人从机器上被切断之前,这会很好用。那么有没有理由不设置多个主管,比如每台机器一个?

以下是在一台机器上设置 OTP 应用程序的方法:

有两 -behavior(application) 件 运行。每个都有一个顶级 -behavior(supervisor) 模块。监督者在其他监督者之下形成监督树并不罕见。

监督树非常适合管理工人,但面对机器故障时的高可用性是一个单独的问题。你可以在一台机器上放一个主管来监督其他机器上的工人,但如果主管机器坏了,你仍然会失去你的整棵树。

对于那种 HA 行为,您需要一些外部系统来监视 machines/BEAMs 并重新启动发生故障的事情。根据您的系统,您可能需要编写代码来定位和重新聚类。这些东西都不像监督树那样不受 OTP 的影响。