Где в Эрланге находится правильное место для производства N процессов? - PullRequest
3 голосов
/ 16 июля 2011

Я пытаюсь найти хорошую документацию (книгу, блог, список рассылки и т. Д.) О том, как правильно выполнить развертывание в производственной системе с Erlang.

Например, у меня есть приложение, которое по проекту должнозапустить три процесса определенного модуля, который принимает поведение gen_server.Когда вы запускаете производственную систему Erlang, как правильно это сделать?

  • Вручную запустить их в оболочке erl?my_server:start(). %% сделать это три раза?(Надеюсь, что это нет.)
  • Позвольте руководителю справиться с этим?(кажется наиболее вероятным?)
  • Позвольте серверу запустить себя три раза?(Я думаю, что это нет.)
  • Позвольте инструменту, подобному арматуре, справиться с этим?(Вы еще не изучили этот инструмент, поэтому не уверены.)

Я пытаюсь найти несколько хороших ресурсов, которые объяснят, как правильно поступить в мире Эрланга.

1 Ответ

5 голосов
/ 16 июля 2011

Супервайзеры - это путь. Вы должны прочитать документы, но инициатор супервизора, подобный этому, загрузит трех идентичных потомков и продолжит их работу:

init([]) ->
  MyChildren =
  [{list_to_atom(ChildName),
    {theworkermodule, start_link, [ChildName]},
    permanent, 1000, worker, [theworkermodule]} || ChildName <- [c1,c2,c3]],
  {ok, {{one_for_one, 5, 10}, MyChildren}} 

Ваше приложение может загружаться этим супервизором, и оно будет поддерживать работу трех ваших дочерних gen_servers (определенных в theworkermodule.erl) - и когда / если один из них умрет, он автоматически перезапустится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...