Erlang 二郎:谁来监督主管?

Erlang 二郎:谁来监督主管?,erlang,erlang-supervisor,erl,Erlang,Erlang Supervisor,Erl,在我看到的所有Erlang管理器示例中,通常都有一个“主”管理器来管理整个树(或者至少是管理器树中的根节点)。如果“主控”主管出现故障怎么办?应如何监督“船长”-监督员??任何典型模式?通常,Supervisor设置为“仅”监督其他流程。因为没有用户编写的代码是由主管执行的,所以崩溃的可能性很小 当然,这不能强制执行。。。所以典型的模式是不在管理器中有任何特定于应用程序的逻辑。。。它应该只管理-而不做其他任何事情。使用start\u链接在应用程序start/2回调中启动顶级管理程序,这意味着它与

在我看到的所有Erlang管理器示例中,通常都有一个“主”管理器来管理整个树(或者至少是管理器树中的根节点)。如果“主控”主管出现故障怎么办?应如何监督“船长”-监督员??任何典型模式?

通常,Supervisor设置为“仅”监督其他流程。因为没有用户编写的代码是由主管执行的,所以崩溃的可能性很小


当然,这不能强制执行。。。所以典型的模式是在管理器中有任何特定于应用程序的逻辑。。。它应该只管理-而不做其他任何事情。

使用start\u链接在应用程序start/2回调中启动顶级管理程序,这意味着它与应用程序进程链接。如果应用程序进程收到来自最高主管的退出信号,它将执行以下两项操作之一:

  • 如果应用程序作为永久性应用程序启动,则整个节点i终止(可能使用HEART重新启动)

  • 如果应用程序作为临时启动,应用程序停止运行,则不会尝试重新启动


  • 好问题。我必须同意,所有示例和教程大多忽略了这个问题——即使偶尔有人提到这个问题(没有提供示例解决方案):


    如果你想要可靠性,至少使用两台计算机,然后让它们互相监督。然而,如何用OTP真正实现这一点(根据当前文档和教程的状态),似乎是隐藏得很好和秘密之间的事情。

    但Erlang通常用于云计算。。例如,如果包含“主”监控器的服务器崩溃(有人意外拔出插头?),监控器可能会崩溃。此外,操作系统上通常运行的不仅仅是应用程序线程。这并不意味着在这种情况下整个云应该崩溃。@dkk Erlang通常不用于云计算。云计算是近几年出现的一个负载术语,而Erlang已经存在了20多年。Erlang通常运行在中小型集群上servers@dkk:您不需要使用监控程序监视其他节点,每个节点上的每个应用程序都有一个主监控程序。