Названия стратегий перезапуска OTP кажутся странными. Зачем?
Извините, это не техническая проблема.
Названия стратегий перезапуска OTP-супервайзера мне кажутся странными, возможно, потому, что я не являюсь носителем английского языка.
Из моего понимания:
one_for_one
: когда один ребенок умирает, он перезапускает этого ребенкаone_for_all
: когда один ребенок умирает, он убивает всех остальных детей и перезапускает их по порядкуrest_for_one
: когда один ребенок умирает, он убивает всех детей, загруженных после этих мертвых детей, и перезапускает их по порядку
И вот мой вопрос:
Я пытаюсь понять названия этих стратегий, читая их как предложения, например, "перезапустить" one
ребенок for
one
детская смерть ".
Тогда либо one_for_all
или же rest_for_one
мне кажется перевернутое имя ("restart one child for all children's death"
??)
Почему эти стратегии были названы так?
ср Эрланг документы one_for_all
В разделе есть фигура с надписью "все в одном". Это просто опечатка?
1 ответ
Есть:
strategy() = one_for_all
| one_for_one
| rest_for_one
| simple_one_for_one
Я пропущу
simple_one_for_one
и сосредоточимся на трех других.
Я считаю, что названия стратегий перезапуска происходят от английской идиомы "Один за всех, все за одного". Выражение кажется довольно старым.
one_for_one
: означает, что один идет и заменяется новым запущенным дочерним процессом.
one_for_all
: означает (из идиомы), что если один завершается, мы (дети) все завершаем работу и начинаем снова.
rest_for_one
: если один из них выходит из строя, остальные также прекращают работу и запускаются снова. "Остальные" в этом случае относятся ко всем последующим (позади) дочерним элементам в указанном порядке начала. Обратите внимание, что единственная разница между этим и приведенным выше - это соблюдение порядка старта.
Я предпочитаю думать о них как о "единой" стратегии (т.е. one_for_one
) и "полная" стратегия (т.е. one_for_all
а также rest_for_one
). В большинстве случаев это будет работать нормально.
"Потому что, когда все это для одного, это один для всех". Брайан Адамс или три мушкетера
таким образом, вы перезапускаете все для того, когда кто-то падает, или вы перезапускаете отдых для того, когда один падает.