2011-08-21 9 views
6

基本的には、以下のアルゴリズムを実装し、これらのアルゴリズムを使用して構築されたシステムがさまざまな条件でどのように動作するかを分析したいと思います。分散メッセージパッシングアルゴリズムを実装するためのプログラミング言語

  • ゴシッププロトコル
  • 複数のPaxosここ

私の興味をハッシュ

  • 一貫性は、これらのアルゴリズムです。私は基本的に、これらのアルゴリズムを素早く深く理解するためのプログラミング言語を探しています。

    どの言語を選択すればよいですか? Java、Scala、Erlangまたはその他のもの。

    現在、私はJavaとC++を知っています。

  • +7

    私の経験では、Erlangは実際には分散メッセージパッシングに適しています。私があなたが言及したプロトコルのいずれかを知らないが、私はErlangがこれらの目的のために試してみるのは良いと思う。 –

    +0

    後で後悔しないでください。 Erlangはフォールトトレラントな分散システムの未来として証明されています。 Erlangのセマンティクスは当初からそのようなアルゴリズムの高速プロトタイプ化をサポートするように設計されています –

    +1

    JavaとC++を知っている方は、どうして代わりを探していますか?あなたの理由を説明できれば、勧告をするのに役立ちます。 –

    答えて

    8

    は見てみましょう。

    • プロセスコミュニケーションは、言語とVMに非常にエレガントにベーキングされています。 2つのelrangプロセス間で非同期メッセージがやりとりされ、同じVM内であるかどうか、または意味的に同等のVM間で処理されます。
    • アルゴリズムのフォールトトレランスアスペクト/リトライロジックなどのコーディングは、erlangでは簡単です。すべてを軽量プロセスにカプセル化し、スーパーバイザと呼ばれる特別なプロセスを使用して再起動します。
    • Erlangオブジェクトをシリアライズするのは本当に簡単です。シリアライズロジックを明示的にコーディングする必要はありません(Javaでシリアライズ可能を実装するなど)。
    • Erlangディストリビューションには、リモートVM上の関数を呼び出すことができるrpcというモジュールが付属しています。
    • Elrangシェルは本当の神が送ります。任意のリモートVMにシェルを接続できます。シェルを使用すると、内部テーブル/データ構造をプロファイリングできます。 VMには、非常に洗練されたデバッグ機能とトレース機能もあり、シェルを介して利用できます。
    • AmazonのDynamoでモデル化されたErlangで書かれたopen source NoSQLデータストアをご覧ください。Riak Consistent HashingとGossipプロトコルの両方を実装しています。
    0

    あなたのメッセージパッシングライブラリについて決めましたか?あなたがMPIに興味があるなら、それのJava版とC++版の両方が利用可能です。

    MPIは、メッセージのブロードキャストや返信の取得など、多くのジョブを実行します。これはアルゴリズムに不可欠です。その結果、C++やJava用の適切なバージョンのMPIを見つけ出し、作業を開始することをお勧めします。あなたはErlangでプロトコルを実装しようとすることができ

    +1

    MPIには、安定したマシンの同種のクラスタが必要です。 configが同種でなく、レイテンシが異なり、マシンが生き残るかどうか不安な曇ったアーキテクチャには適していません。だから、分散計算のための最後の万能薬ではありません。 – paradigmatic

    +0

    @paradigmatic:同意しない! MPIプログラムは異種(HW、OS、PL)環境で実行できます。 Plsはajav(質問した人)が一連のプロトコルでそれらを実験することによってメッセージの受け渡しを知るためにライブラリを必要としていることに注意します。彼はあなたが言ったような本当の曇った環境に直面していません。 MPIのフォールトトレラントバージョンについては、FT-MPI(http://icl.cs.utk.edu/ftmpi/)をご覧ください。 – hsalimi

    +1

    Erlangを忘れましたか?これは間違ったアドバイスです。今日実装されているアルゴリズムは、技術が昨日の課題に基づいていた今日の課題に耐えられないかもしれません。 Erlangはスケーラビリティ、可用性、安定性(プロトタイピング時間が小さい)で戦闘テストを受けています。 Riak、Membase、Scalaris、Yaws e.t.cのようなシステムを比較するこれらのシステムはErlangに組み込まれた安定したモデルに依存しており、今日の課題に対して信頼できることが証明されています。 Erlangを試してください、あなたは後悔しません –

    2

    これらのプロトコルはすべて、すでにさまざまなErlangプロジェクトで実装されていました。詳細については Mnesia,Riak,CouchDBScalaris(各プロジェクトのすべてのプロトコルではありません)を参照してください。私はErlangよりもこの種のプロトコル実験のためのより親しみやすい環境を想像することはできません。

    4

    ああ、はい!あなたはこれらを見て、Erlangのプログラミングを開始することができます

    1. Learn You some Erlang for great good
    2. Erlang Book Part 1
    3. Orielly's Erlang Programming Text Book (Francesco Cezarini and Simon Thompson)
    4. Joe Armstrong's Programming Erlang Text Book

    上記のリンクは、必要な場合があるErlangプログラミングのすべてのリソースを提供します。しかし、私はあなたがJoe Armstrongs Programming Erlang Text Bookで始まることをお勧めします。それを読んでから、データ構造をさらに理解するために、参考としてウェブサイトLearn you some erlang for great good(上記参照番号1)を使用してください。

    ここからErlangをダウンロードできます。Erlang Download official Page

    他のリンクとリソース(アプリケーション、ライブラリなど)が必要な場合があります。その多くはここでインデックスされています:Erlang/OTP .com website

    場合によっては、ここでStackoverflowに関する質問をいつでも聞くことができます。また、sourceforgeからツールやライブラリを検索することもできます。

    +1

    それは素晴らしいようです。機能を見て、私はC++とjavaで10年のコーディングをした後、このエレガントなPLを学ぶべきだと思います。 – hsalimi

    関連する問題