1

サーバーにサブスクライブするインターネット上のクライアント マシンに、アイドル状態の CPU サイクルを提供してもらいたい (SETI@Home など)。

サーバーからプロセスへのジョブ (作業単位) を取得し、結果をサーバーに送り返します。(これは最も簡単な説明です)。私が必要とするフレームワークは、ジョブ/タスクを定義できるようにする必要があります。通信、ジョブの実行/追跡、クライアント バイナリの更新などの残りの部分は、フレームワークで管理する必要があります。

  • Alchemi.NET を少し評価しましたが、積極的にメンテナンスされておらず、中途半端に思えます。

  • BOINC には C の API がありますが、.NET または Java フレームワークが必要です。

  • Manjrasoft の ANEKA を見ていますが、LAN クラウドでしか動作しないようです。

利用可能なそのようなフレームワークがいくつかあるはずです。専門家の推薦が必要です!

4

4 に答える 4

0

自動更新されたクライアントバイナリを管理するための.netのClickOnceインストーラーはどうですか。 http://msdn.microsoft.com/en-us/library/t71a733d.aspx

「ジョブフレームワーク」とは言えませんが、クライアントと同期する独自のジョブのローリングをサポートするMicrosoftの同期フレームワークはありますか?

http://msdn.microsoft.com/en-us/sync/default

于 2011-01-19T10:42:37.950 に答える
0

私のおすすめ

作業距離:

  1. rabbit mq のように、メッセージをメッセージ キューに入れるリクエストのレシーバーを用意します。
  2. 同じキューをリッスンし、そこから作業を取得し、完了したらそれを確認する、多数のワーカーを用意します。
  3. 完了したら、ネットワーク ドライブなどの既知の場所への URI を含むメッセージを別のキューに送信します。ターゲットは、解析されたデータです。
  4. 受信者は、これらの「完了」メッセージをリッスンします。URI からデータを取得します。

終わり。

RabbitMQ には優れた CLR API が付属しています。

同じ理由が、Microsoft Azure とその AbbFabric Queue にも当てはまります。プラスは、それが非常にうまくスケーリングされることです。

ホットバージョニング

http://topshelf-project.com/

バイナリをドロップできるフォルダーが提供され、バイナリが実行されます。これらのバージョン管理と、Windows サービスとしての実行を管理します。

展開

robocopy/xcopy および「net use Q: pwd \server\share」、「net delete Q:」を使用してバイナリを展開できます。

継続的インテグレーション

チームシティ

MsBuild を広範囲に使用した後、psake でスクリプトを作成し、PowerShell でビルドを実行することをお勧めします。PowerShell に慣れると、ビルド スクリプトから WinRM を利用できるようになります。これは非常にスムーズです。

git/subversion コミット番号を以前のバージョン番号の 0.0.0.x, x として使用すると、「デバッグ」/「本番」ビルド全体で「共有」される自動バージョン管理が行われます。

アズールウェイ

作業距離:

上記と同じですが、RabbitMQ の代わりに AppFabric Queue を使用します。

ホットバージョニング

「Staging」インスタンスと「Production」インスタンスを入れ替えることで、ダウンタイムを回避できます。

展開

ここで読むことができるように Azure Tools for Visual Studio の MsBuild タスクを利用するか、継続的インテグレーションのために上記と同様のセットアップで PowerShell AzureSnapIns を使用することができます。

継続的インテグレーション

同上。

于 2011-01-19T01:35:17.027 に答える
0

私はほとんど専門家ではありませんが、MPI (C) を使用した分散コンピューティングの経験は少しあります。あなたが話していることは、グリッド コンピューティングではなく、マスター/スレーブ システムのように聞こえます。つまり、サーバーがマスターであり、すべてのクライアント (スレーブ) を管理します。

私は .net プログラミングについてほとんど知らないので、一般的な話をします。

そこには多くの Web フレーム作品があり、おそらくそのほとんどが必要な機能を備えています。つまり、クライアントは収集したコンテンツを含むファイルをアップロードできます (または、http get/post を使用することもできます)。UI の問題を心配する必要がないため、おそらく 1 つのアクションですべてを処理できます (アクションベースの Web フレームワーク)。その後、サーバーは JSON または XML を介して応答を返すことができ、クライアントはそれを使用してさらに指示を出すことができます。システムが非常に単純で、おそらくプロトタイピングに適している場合は、JSON が適切な選択です。

アプリケーションのアップグレードについては、これを別の問題と考えます (ただし、サーバーがこれをクライアントに返すのは簡単なことです)。

于 2011-01-13T08:13:03.303 に答える
0

BOINC は、ボランティア コンピューティングの要件を最も自然に満たすフレームワークであり、安定しており、拡張性に優れています。除外する前に、完全に検討したことを確認してください。

短い期限までに何かを提供する必要がある場合は、単純なスーパーバイザー (またはスケジューラー) - ワーカー パターンを作成して、アプリケーションを軌道に乗せることを検討します。スーパーバイザーは、データをチャンクアップし、http で利用できるようにする責任があります。ワーカー (クライアント アプリ) はスーパーバイザー サーバーに接続します。作業のチャンクをダウンロードします。チャンクを完成させます。結果をスーパーバイザーにアップロードします。

主な秘訣は、ステート マシンを適切にスラッシングすることです。これにより、各ワーク チャンクの状態を正確に追跡できます。私なら、スーパーバイザがバックグラウンドでデータベースに状態を保持するようにします。

最初のリリースは内部で行う必要がありますか?それとも一般向けですか?

それが機能している間に、私は BOINC を使いこなし、移行を計画することを検討し始めます。

于 2011-01-13T08:39:59.020 に答える