Erlang 主管:simple_one_for_one 和 one_for_one 重启策略的区别

Erlang supervisor: difference between simple_one_for_one and one_for_one restart strategies

simple_one_for_oneone_for_one 重启策略有什么区别?什么时候需要偏爱一个?

supervisorS表示,workersW表示。

如果Sone_for_one重启策略下监督W1W2W3,并且W中的任何一个死亡,仅此W 重新启动。

simple_one_for_one重启策略与one_for_one相同。这意味着如果一个 W 死了,那么 W 就会重新启动。唯一的区别是当 S 开始时,它没有任何 Ws.

W通过调用supervisor:start_child/2.

动态添加

When need to prefer one over another?

  • simple_one_for_one — 您需要 W 来为每个请求提供服务;例如:身份验证协议

  • one_for_one — 在整个应用程序生命周期中,无论如何都需要专用的 W 进程。