Подтвердить что ты не робот

Запуск удаленных узлов Erlang

Я хочу написать приложение master-slave в Erlang. Я думаю о следующих вещах, которые мне нужны из архитектуры:

  • ведомые не должны умирать, когда мастер умирает, а скорее попытайтесь снова подключиться к нему, пока мастер остановлен.

  • мастер должен автоматически запускать удаленные узлы, если они не подключаются автоматически или они не работают (возможно, поведение супервизора в OTP)

Для этого существует ориентированное на OTP поведение? Я знаю, что я могу запускать удаленные узлы с помощью slave:start_link(), и я могу контролировать узлы с помощью erlang:monitor(), но я не знаю, как это можно включить в поведение gen_server.

4b9b3361

Ответ 1

Я согласен с комментариями об использовании erlang: monitor_node и использовании распределенных приложений.

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

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

Если вы должны использовать несколько виртуальных машин Erlang, тогда вы должны тщательно рассмотреть, сколько вы запустили, поскольку большое количество из них может вызвать проблемы с производительностью из-за того, что OS-подсистемы OS обрабатываются и выходят. Эмпирическое правило для наилучшей производительности - это стремление иметь не более одного процесса ОС (т.е. Один Erlang VM) на ядро ​​процессора.

Ответ 2

Если вы заинтересованы в изучении других реализаций, Basho riak_core framework имеет довольно хороший подход к децентрализованным распределенным приложениям.

riak_core_node_watcher.erl содержит в себе наиболее интересный node код наблюдения.

Поиск, и вы обнаружите, что существует немало разговоров и презентаций о структуре.