2009-06-09 5 views
12

Erlangのアクターモデルの特徴の1つは、の透過分布です。私が誤解していない限り、あなたが俳優の間でメッセージを送るとき、理論的には同じプロセス空間にいるか、同じ物理マシン上に同じ場所にいることを仮定してはいけません。Erlangのアクターの透過的な配布のサポートは、アプリケーション設計にどのような影響を与えますか?

分散フォールトトレラントシステムでは、ordering/causalityconsensus(など)の固有の問題を解決するために慎重なアプリケーション設計が必要です。

私はErlangがこれらのクラスの問題を透過的に解決することを約束していないと確信しています。私の質問は、Erlangの開発者はこれにどのように対処していますか?あたかもすべてのアクターが同じプロセス空間にいるかのようにアプリケーションを設計し、実際にそれらを配布する時間が来たら、配布の問題のみを解決しますか?もしそうなら

は、真の分散アプリケーションがまだアプリケーション層での慎重な設計を必要とするという意味で、本当に透明本当にただのワイヤプロトコルに関係リモートメッセージングに使用していないのErlangのこの透明分布機能ですか?

答えて

3

あなたは本質的に発注/因果関係や合意の問題を解決していないということは間違いありません。あなたのための抽象概念は、メッセージをローカルまたはリモートのノードに送ることの違いです。

言語デザインでこれらの問題を解決することが本当に可能かどうかはわかりません。より適切にはフレームワークに属します。 OTPフレームワークには、それを助けるツールがいくつかあります。実際には、あなたが解決している特定の問題に多少依存していますが。

distributerl アーランOTPスーパーバイザでアーランVectorClock実装外観の一例にも共通するのに必要なインフラの一部を提供するが、いくつかのコンセンサスは、分散システムを通る非同期メッセージで不可能であると考えがあるかもしれません。それに関する追加情報については、参照されているwikiページを参照してください。

3

Erlangは実際にこれらの問題を透過的に解決します。これは、不変(単一代入)変数を持つ関数型言語であるため、これを行うことができます。同時実行性のためにActor modelを使用しており、プログラマがsynchronizationを気にすることなく、コードと並行プログラミングのホットスワップを可能にするように特別に設計されています。

Wikipedia articleには、実際にはこれについての説明があります。エリクソンが大規模な並列電話スイッチをプログラムするための実用的な方法として、この言語を発明したのは私の理解です。

+1

Re:同期性、私は、「データ同期」よりもフォールトトレラントな分散システムで発生する因果関係やイベントの順序付けの問題を指していました。その部分を少し明確にすることができるかどうかがわかります。 –

3

Erlangのは、それらのもの(http://www.sics.se/~joe/thesis/armstrong_thesis_2003.pdf 3.1節(39-40))を約束:

  • すべてがプロセスです。
  • プロセスは強く隔離されています。
  • プロセスの作成と破棄は軽量操作です。
  • メッセージの受け渡しは、プロセスが対話する唯一の方法です。
  • プロセスには一意の名前があります。
  • プロセスの名前がわかっている場合は、メッセージを送信できます。
  • プロセスはリソースを共有しません。
  • エラー処理がローカルではありません。
  • プロセスは、実行する必要があるか、失敗するかを実行します。

残りはあなた次第です。理由を知りたい場合は第2章を参照してください。まもなく、PIDがHWの別の部分にある場合でも、プロセスにメッセージを送信できます。共通の秘密の応答を受け取らない限り、メッセージが到着するかどうかはわかりません。プロセスの障害を監視(またはリンク)すると、障害メッセージが表示されます。それらは基本的な要素で、あなたが望むものを構築することができます。

+1

リンクをありがとう。 Erlangの「透過的な配信」は実際には「透過的なリモートメッセージング」であるという私の主張を繰り返していると思います。私は@ {Jeremy Wall}に、あなたがトランスペアレントに解決できないシステムを配布する際に問題があることに同意します。たとえば、このペーパーで概説されているもの: http://research.sun.com/techrep/1994/smli_tr-94-29.pdf –

関連する問題