2011-07-16 9 views
3

私は、Erlangを使用して本番システムに正しくデプロイする方法について、良い文書(ブック、ブログ、メーリングリストなど)を探しています。本番環境でN個のプロセスを起動するErlangの正しい場所はどこですか?

例えば、私は、設計によって、gen_serverの動作をとる特定のモジュールの3つのプロセスを起動する必要があるアプリケーションがあります。プロダクションのErlangシステムを開始するとき、これについて正しい方法は何でしょうか?

  • 手動でerlシェルで起動しますか? my_server:start(). %%これを3回実行しますか? (私はこれがいいと思っています)
  • スーパーバイザはそれを処理しますか? (最も可能性が高いと思われる)
  • サーバーを3回起動させますか? (私はこれがノーだと思う)
  • 鉄筋のような道具はそれを扱わせますか? (まだこのツールを学んでいないので、わかりません)

私は、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}} 

あなたはこの上司を起動してアプリケーションを持つことができますし、それはあなたの3つの子gen_serversを維持します:あなたは、ドキュメントをよく読んでなければならないが、監督は次のようにinitの3つの同一人の子供を起動し、実行しているそれらを維持しますtheworkermodule.erl)の実行中 - そして、/が死ぬと自動的に再起動します。

+0

また、ErlangとOTPはドキュメンテーションに関連して、監督者の開始方法とアプリの構造を学ぶのに適した本です。 – inaka

+0

詳細については、OTP Design Principlesを参照してください。(http://www.erlang.org/doc/design_principles/des_princ.html) –

関連する問題