Process 主管子对象与普通生成链接
我有一个称为“监控节点”的过程层次结构。每个监控器_节点都由一个监控器进行监控 现在,这些节点中的每一个都可能有一个复杂的内部结构。也就是说,它可能(也可能不)有一些子流程是它正常运行所必需的。示例:进程发送保持活动状态消息。到目前为止,我一直在使用普通的spawn_链接来创建这些“内部” 过程 然而,我已经意识到,在monitor_节点的init函数中生成它们有时会导致该函数失败(因此整个supervisor树都会失败)。我的问题是:将这些内部流程附加到主管树是否是一个好的解决方案?我正在考虑将monitor_节点更改为监督其内部流程的主管 我的疑问是:Process 主管子对象与普通生成链接,process,erlang,spawn,erlang-supervisor,Process,Erlang,Spawn,Erlang Supervisor,我有一个称为“监控节点”的过程层次结构。每个监控器_节点都由一个监控器进行监控 现在,这些节点中的每一个都可能有一个复杂的内部结构。也就是说,它可能(也可能不)有一些子流程是它正常运行所必需的。示例:进程发送保持活动状态消息。到目前为止,我一直在使用普通的spawn_链接来创建这些“内部” 过程 然而,我已经意识到,在monitor_节点的init函数中生成它们有时会导致该函数失败(因此整个supervisor树都会失败)。我的问题是:将这些内部流程附加到主管树是否是一个好的解决方案?我正在考虑
main_sup -> worker
main_sup -> attached_pool_sup
attached_pool_sup -> workers
主sup是“一对一”的,因此如果工人或池主管死亡,则树将被删除。池管理器是一个简单的一对一的管理器,适用于成百上千的工人
初始化:
不要在init回调中做太多工作。主管将等待初始化完成,如果超时时间超过正常时间,您可以设置超时时间(在您的情况下可以增加超时时间)
一个技巧是快速超时(从init返回超时为0),然后在
handle\u info
timeout回调中处理其他设置。这样你就不会妨碍主管了。注意这里的比赛 谢谢你的回答!我假设附加的\u pool\u sup
将负责监督我在问题中提到的“内部”流程?好的。因此,在这种情况下,对于每个内部进程,我的monitor\u node:init
函数必须在attached\u pool\u sup
上调用supervisor:start\u child
。我说得对吗?如果是,它会不会再次使init
函数复杂化?