【发布时间】:2018-06-02 10:21:10
【问题描述】:
simple_one_for_one 和one_for_one 重启策略有什么区别?什么时候需要一个胜过另一个?
【问题讨论】:
-
一个简单的选择它们的方法:当工人相同时,他们只是为相同的事情使用 diff-arg,使用 simple_one_for_one。否则,使用 one_for_one
标签: erlang erlang-otp
simple_one_for_one 和one_for_one 重启策略有什么区别?什么时候需要一个胜过另一个?
【问题讨论】:
标签: erlang erlang-otp
让supervisor用S表示,workers用W表示。
如果S在one_for_one重启策略下监督W1、W2、W3,并且W中的任何一个死掉,只有W被重启。
simple_one_for_one重启策略与one_for_one相同。这意味着如果一个W 死了,那么W 会重新启动。唯一的区别是S 启动时,它没有任何Ws。
Ws 是通过调用supervisor:start_child/2 动态添加的。
什么时候需要比另一个更喜欢一个?
simple_one_for_one — 您需要 W 来为每个请求提供服务;例如:身份验证协议
one_for_one — 在整个应用程序生命周期中,无论如何,您都需要专用的 W 进程。
【讨论】: