.net分散グリッドコンピューティングの移行、ライブラリに関する推奨事項、アーキテクチャ[非公開]

StackOverflow https://stackoverflow.com/questions/1226728

質問

c#マルチスレッドモンテカルロシミュレーションがあります。アプリケーションは既に、独立して実行されるタスクに分割できるように構成されています。TaskControllerはタスクを実行し、中間結果を集計し、収束(早期終了基準)は最終結果を返します。これは現在、ThreadPoolを使用して実装されています。

この計算を支援するために複数のコンピューターを活用したい。 IISを使用するための承認またはインフラストラクチャはありません(これは変更されないポリシーです)が、たとえば WCFとNetTcpBinding エンドポイントバインディングを使用できます。サーバー間でこの通信をテストし、適切な許可と機能を持っています。

開始するには、1つのマスターexe(コンソールアプリ)と専用ワーカーとして他のサーバーに複数のスレーブ(これらはexeですか?Windowsサービスですか?)があると考えていますが、最終的にこのセットをで実行することができますアイドル時間(またはスクリーンセーバーがアクティブなとき)に会社内の数百のワークステーション(およびサーバー)。

これを自分で書くこともできますが、通信を処理する必要があります、1、2ウェイ?早期終了(中間収束結果の確認)、不要になったタスクのキャンセル、作業の展開、利用可能な準備が整った作業の展開の検出、ワークステーションがアイドル状態でなくなった場合の作業の調整/一時停止分散システムに入る他のすべては?

マスター(タスクコントローラー)がすべてのスレーブワーカーのアドレス(ip)を知って作業を行うように指示する(使用可能な場合)か、スレーブワーカーがマスターアドレスを知って作業中に作業を要求する必要があるそうする立場、またはコミュニケーションは両方の方法で流れるべきですか?これは 24時間制で実行され、さまざまなビジネス地域をサポートするために1日約9回実行されます。

この取り組みで役立つ .netグリッド/分散ライブラリの推奨事項とアーキテクチャに関するアドバイスを探しています。

更新

次のいずれかを使用した経験がありますか?

http://www.digipede.net/ (commercial)
http://www.gridbus.org/~alchemi/
http://ngrid.sourceforge.net/
http://www.osl.iu.edu/research/mpi.net/

または.NETのJavaSpaces、Jiniを使用しているか、同等の.netテクノロジーが見つかりました

http://java.sun.com/developer/technicalArticles/tools/JavaSpaces/
http://www.jini.org

ありがとう

役に立ちましたか?

解決

このためにスペースベースのアーキテクチャを使用する可能性を調査します。

マスターはジョブをスペース(基本的にオブジェクトリポジトリ)に書き込みます。消費クライアントは常にジョブを探しており、ジョブが使用可能になると、スペースからプルして処理し、結果をそのスペースまたは別のスペース(すべてトランザクション下)に書き戻します。結果をグループ化するために、ジョブを特定の実行に属するものとしてタグ付けします。

これの利点は、これが非常に簡単にスケーリングできることです(単に消費者を追加するだけです)。消費者は、いつ仕事ができるかを判断する必要があり、単にスペースに関する情報(それを見つける方法)を設定する必要があります。プロデューサーは、コンシューマーのセットから完全に切り離されます。

トランザクションの下で作業が処理されるため、消費者が完了に失敗した場合、作業はスペースに戻り、別の消費者が処理できるようになります。

中間結果を簡単に処理できます。プロデューサーはスペースから結果を取得し、結果が利用可能になると中間体を導出できます。ジョブを簡単にキャンセルできます。スペースからそれらを削除するだけです。

非常に簡単にプロデューサーを追加できます。彼らは単に同じスペースに書き込むだけで、ジョブが適切にタグ付けされていれば、結果はプロデューサーに明確に結び付けられます。

.Netでどのフレームワークが利用できるのかわかりませんが、残念ながら(私はJavaの世界から来ており、 Javaspaces -これらは動的検出を使用し、ほとんど設定が不要です。しかし、いくつかのグーグルの価値があります。おそらく(これが十分強力な場合)、C#プロデューサー/コンシューマーを記述して、Javaspaceインフラストラクチャへのインターフェイスを作成できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top