Почему Erlang/OTP не использует несколько супервизоров (или использует)?

Глядя на документацию по OTP, кажется, что типичным способом настройки этих систем является наличие одного супервайзера, контролирующего нескольких работников:

http://www.erlang.org/doc/design_principles/sup_princ.html

Это будет прекрасно работать до тех пор, пока машина, на которой работает супервизор, не выйдет из строя или не будет отключена от машин с рабочими. Так есть ли причина не иметь несколько супервизоров, скажем, по одному на машину?


person ijt    schedule 18.02.2015    source источник
comment
Я не думаю, что вы захотите контролировать процессы на другом узле (или машине). Итак, нет, хотя бы один супервайзер на узел — это хорошо.   -  person CoderDennis    schedule 19.02.2015
comment
Это может помочь learnyousomeerlang.com/distributed-otp-applications   -  person CoderDennis    schedule 19.02.2015
comment
лучшее описание — одно дерево наблюдения на узел и на приложение, но несколько приложений на узел и несколько узлов, когда требуется надежность... см. лизировать   -  person Pascal    schedule 19.02.2015
comment
Перечитайте это: erlang.org/doc/design_principles/des_princ.html#id63532 Все, что не является кругом, является надзирателем. Где в этом дереве вы рисуете линии, разделяющие различные элементы по узлам, зависит только от вас, даже если вы хотите воспроизвести все это на нескольких узлах.   -  person zxq9    schedule 19.02.2015


Ответы (1)


Вот как можно настроить приложение OTP на одном компьютере:

введите здесь описание изображения

Работают две -behavior(application) штуки. Каждый из них имеет -behavior(supervisor) модуля верхнего уровня. Нет ничего необычного в том, что супервизоры подчиняются другим супервизорам, образуя дерево супервизий.

Деревья наблюдения отлично подходят для управления работниками, но высокая доступность в условиях сбоя машины — это отдельная проблема. Вы можете поставить супервизор на машину, контролирующую рабочих на других машинах, но если супервизор выйдет из строя, вы все равно потеряете все свое дерево.

Для такого поведения HA вам нужна внешняя система, которая отслеживает машины/BEAM и перезапускает все, что выходит из строя. В зависимости от вашей системы вам может потребоваться написать свой код для поиска и повторной кластеризации с его одноранговыми узлами. Ни одна из этих вещей не свободна от OTP, как это делает дерево супервизии.

person Nathaniel Waisbrot    schedule 19.02.2015
comment
Согласен с вами, добавлю, что для высокой доступности есть много вариантов: уровень безопасности, масштабируемость, неоднородность, производительность, какую сторону CAP мы используем... Не уверен, что универсальное решение подойдет всем возможности. - person Pascal; 19.02.2015