Erlang在生产过程中产生N个过程的正确位置在哪里?

时间:2011-07-16 17:14:50

标签: erlang

我正在尝试找到一些关于如何使用Erlang正确部署到生产系统的好文档(书籍,博客,邮件列表等)。

例如,我有一个应用程序,设计应该启动特定模块的三个进程,这些进程采用gen_server行为。当你开始生产Erlang系统时,正确的方法是什么?

  • 在erl shell中手动启动它们? my_server:start(). %%这样做了三次? (我希望这不是。)
  • 让主管处理吗? (似乎最有可能?)
  • 让服务器启动三次? (我认为这不是。)
  • 让钢筋这样的工具处理吗? (还没有学过这个工具,所以不确定。)

我正试图找到一些好的资源,以解释在Erlang世界中解决这个问题的正确方法。

1 个答案:

答案 0 :(得分:5)

主管是要走的路。您应该阅读文档,但是像这样的主管初学者会启动三个相同的孩子并让他们继续运行:

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(在workermodule.erl中定义)运行 - 当/如果一个人死了它将自动重启。