2011-04-18 124 views
10

在我看到的所有Erlang主管例子中,通常都有一个监督整棵树(或者至少是主管树中的根节点)的“主”监督者。如果“主人” - 监督人休息怎么办?应该如何监督“主”监督?任何典型的模式?Erlang:谁来监督监督员?

回答

10

使用start_link在顶层管理器启动您的应用程序启动/ 2回调,这意味着它与应用程序进程链接。

  1. 如果应用程序开始作为一个永久的应用程序,我终止了整个节点(使用HEART可能重新启动):如果应用程序从顶部的主管死于它的两两件事之一接收的退出信号。

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

3

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

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

+1

但Erlang通常用于云计算。例如,如果包含“主”监督者的服务器崩溃(某人意外拔出插头?),则监督器可能会崩溃。而且,通常不仅仅是在OS上运行应用程序线程。这并不意味着在这种情况下整个云应该会崩溃。 – Daniel 2011-04-18 11:38:07

+4

@dkk Erlang通常不用于云计算。云计算是过去几年出现的一个加载术语,而Erlang已经存在了20多年。 Erlang通常宁愿运行在小型到中型服务器集群上 – 2011-04-18 19:54:35

+2

@dkk:你不看管理员的其他节点,每个节点上的每个应用程序都有一个主管理员。 – 2011-04-19 14:33:17

3

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

如果您想要可靠性,请至少使用两台计算机,然后使它们互相监督。但是,如何通过OTP真正实现这个目标(具有目前的文档和教程状态),然而,似乎处于隐藏和秘密之间的某个地方。