2011-07-16 98 views
3

我想找到一些很好的文檔(書籍,博客,郵件列表等)關於如何正確部署到Erlang生產系統。Erlang在生產中產生N個過程的正確位置在哪裏?

例如,我有一個應用程序,設計應該啓動一個特定模塊的三個進程,它承擔gen_server行爲。當你開始生產Erlang系統時,有什麼正確的方法來解決這個問題?

  • 在erl shell中手動啓動它們? my_server:start(). %%這樣做三次? (我希望這是一個不。)
  • 讓一位主管處理它? (似乎最可能?)
  • 讓服務器自己啓動三次? (我認爲這是一個不。)
  • 讓像螺紋鋼這樣的工具處理它? (還沒有學過這個工具,所以不知道。)

我試圖找到一些好的資源(s),將解釋在Erlang世界去這個正確的方式。

回答

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)運行 - 當/如果一個人死亡,它會自動重啓。

+0

另外,與文檔相關的Erlang和OTP在行動中是學習如何啓動主管以及如何構建應用程序的好書。 – inaka

+0

欲瞭解更多信息,請查看OTP設計原則:(http://www.erlang.org/doc/design_principles/des_princ.html) –