Erlang:谁监督主管?

时间:2011-04-18 08:33:01

标签: erlang supervisor erl

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

3 个答案:

答案 0 :(得分:11)

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

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

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

答案 1 :(得分:4)

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

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

答案 2 :(得分:3)

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

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