在我所见过的所有Erlang主管示例中,通常都有一个“主”主管监督整个树(或者至少是主管树中的根节点)。如果“主人” - 监督员破裂怎么办?如何监督“主人”监督?任何典型的模式?
答案 0 :(得分:11)
使用start_link在应用程序启动/ 2回调中启动顶级管理程序,这意味着它与应用程序进程链接。如果申请流程收到来自最高管理人员的退出信号,则会执行以下两项操作之一:
如果应用程序作为永久应用程序启动,则整个节点终止(并且可能使用HEART重新启动)。
如果应用程序作为临时启动应用程序停止运行,则不会重新尝试。
答案 1 :(得分:4)
通常,Supervisor设置为“仅”监督其他进程。哪个男士没有用户编写的代码由Supervisor执行 - 所以它不太可能崩溃。
当然,这不能强制执行......所以典型的模式是不在Supervisor中有任何特定于应用程序的逻辑......它应该只监督 - 并且不做任何其他事情。
答案 2 :(得分:3)
好问题。我必须同意所有示例和教程大多忽略了这个问题 - 即使偶尔有人提到问题(没有提供示例解决方案):
如果您想要可靠性,请至少使用两台计算机,然后让它们相互监督。然而,如何使用OTP实际实现(使用文档和教程的当前状态)似乎介于隐藏和保密之间。