erlang simple_one_for_one监控策略

在工作的时候遇到过这样的问题,由simple_one_for_one的supervisor创建的所有子进程在supervisor挂掉后不会被重启,才想到simple_one_for_one的supervisor会有这个隐患,同事提出个解决方案,把simple_one_for_one换成one_for_one,每次想动态子进程也可以调用supervisor:start_child。这个是个不错的方案,那么难道用simple_one_for_one就不能实现supervisor重启后子进程也重启么?当然能。怎么做呢?

 应该在让顶层supervisor启动manager,manager的init中启动下级的supervisor,然后创建子进程,如果二级supervisor挂了,与其链接在一起的manager也挂了,这样顶级supervisor重启manager的时候又会重启supervisor,并创建子进程。

 

 

猜你喜欢

转载自wudixiaotie.iteye.com/blog/2228029