11

在我见过的所有 Erlang 主管示例中,通常有一个“主”主管负责监督整个树(或者至少是主管树中的根节点)。如果“主人”主管坏了怎么办?“主人”——主管应该如何监管??任何典型的模式?

4

3 回答 3

12

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

  1. 如果应用程序作为永久应用程序启动,则我终止了整个节点(并且可能使用 HEART 重新启动)。

  2. 如果应用程序临时启动,应用程序将停止运行,则不会进行重新启动尝试。

于 2011-04-18T09:23:01.193 回答
4

通常,Supervisor 设置为“仅”监督其他进程。哪个男人没有由主管执行的用户编写的代码 - 所以它不太可能崩溃。

当然,这不能强制执行......所以典型的模式是在 Supervisor 中没有任何特定于应用程序的逻辑......它应该只监督 - 并且什么都不做。

于 2011-04-18T08:48:53.007 回答
3

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

如果您想要可靠性,请至少使用两台计算机,然后让它们相互监督。然而,如何使用 OTP 实际实现它是(根据文档和教程的当前状态),似乎介于隐藏和秘密之间。

于 2011-04-18T18:46:03.663 回答