2011-07-23 10 views
1

私はErlangを使って分散アプリケーションの概念を説明しようとしています。私のシステムは現在、1台のサーバーと1台のATMを持っています。私はできるだけシンプルにしています。erlang分散バンキングシステム

私のアプリケーションはローカルで実行されます。私はgen_serverを使用して、銀行サーバーとATMの間のクライアントとサーバーの関係にしています。私はgen_fsmモジュールを持っていて、私のATMにはさまざまな状態が示唆されています。あらゆるデータを格納するために、私はdictモジュールを使用します(私はデータベースを使用してもっと複雑にしたくありません)。プロセスを生存させるために(gen_servergen_fsm)、私はsupervisorプロセスを使用しています。すべてのモジュールをアプリケーションとしてラップしましたが、現時点ではすべてローカルです。どんなアイデアも高く評価されます。

私は2つの異なるノードで同じアプリケーションを起動し、分散型の概念をいくつかの種類のフェールオーバー/テイクオーバーメカニズムを使用するように説明することを考えていましたが、どのモジュールを使用するかについてのアイデアはありません。

  • は、ターゲット・システムを使用することが必須です(いくつかの点で私は、アプリケーションへのホットアップグレードを行う必要があります)
  • これらの事を行うには正しい順序何?:最初にアップグレードして配布しますか?

誰かが私にそれらのすべてのものを達成する方法についていくつかのアイデアを与えることができたら、私は非常に感謝します。

+0

まず、ホットアップグレードまたはディストリビューションに重点を置く必要があるのは何ですか?本当に必須のものはありません:-)しかし、ターゲットシステムとOTPを使用すると、分散システムやホットコードをアップグレードする際に多くの手助けをします。 –

+0

私は両方のことをしなければなりません。私のアプリケーションはすでにOTPルールに従って構築されていますが、私の動作プロセス(サーバー、fsm、スーパーバイザー)はすべてローカルです。私は、ホットアップグレードのためにリリースを使用すると思います。ディストリビューションに関しては、私はどのように作成するか、各ノードの設定ファイルをどこに置くべきかに関する適切な例は見つけられていません。いくつかのガイドラインと多分両方のことを達成するための方法の順序は私を非常に助けます。あなたの先鞭をつけてくれてありがとう、アダム。 – ar3tzu

答えて

2

自分で試したことはありませんでしたが、ドキュメントは、 Erlang Release Handling(11.3分散システム)を指しているようです。

sync_nodesコマンドを示す短い段落ですが、並行性と配布の概念がErlangではしばしば解決され、OTPに含まれていることに気がついたので、章全体を読むことをお勧めします。

また、Erlangのユーザガイドには、分散アプリケーションの設定オプションに関連すると思われるDistributed Applications専用の章があります。私はその2つはトリックを行うべきだと思います。

ほしいと思うより多くの助けが必要な場合は、これが役立ちます。