質問
これと同様の質問が見つからなかったようです。
私は現在、グリッド コンピューティングの問題を解決する最適なソリューションを検討しています。
セットアップ:
- クライアントが[通常、ほとんどのロジックを理解していない]があり、サーバーから指示を受け取るサーバー/クライアントの状況があります。
- 承認リクエストがある
- クライアントはタスクの完了速度に関する情報を報告します (タスクの難易度はタスクの種類によって判断されます)。
- クライアントは、以前のパフォーマンスに最も適したタスクを受け取ります (最良のクライアントは最悪の問題を受け取ります)。
最終的には次のような要件になります。
- クライアントのフットプリントは小さく、スタンドアロンである必要があります。多くのインストールとセットアップを必要とするクライアントを使用することはできません。
- クライアントは、サーバーから新しいジョブとジョブ ランタイムを取得できる必要があります (導入された新しい問題に合わせてグリッドをスケールできると便利です (新しい問題はサーバーによって分散されます))。
- 認証層が必要です (複雑である必要も、既存の LDAP に準拠する必要もありません) [より簡単な要件:クライアントは新しい「メンバーシップ」にサインアップしてアクセスできる] (RMI の強みがここにあるのかどうかはわかりません)
- クライアントはネットワーク環境ではなくインターネットから実行できるようになります。
- これは、要求された結果の暗号化を意味します
現在、Webサービスを使用してクライアントとサーバー間の通信を行っています。すべての情報と結果はホスティング サーバー (J2EE) に返されます。
私の質問は、これらの要件のすべてまたはほとんどを満たし、オープンソースであるグリッド システムのセットアップはあるのでしょうか?
これらのタスクのほとんどは小規模ですが、非常に頻繁に行われるため (1 日 1 回、タスクは簡単かもしれませんが、メンテナンスが実行されます)、クラウドを実行することに興味がありません。
このシステムのコードはすべて Java で作られています。
解決
調べてみるといいかもしれません 宇宙ベースの建築, 、特に ジニ そして Javaスペース. 。ジニって何?これは本質的に、構成可能な検出メカニズムを備えた RMI です。Java インターフェースの実装者をリクエストすると、Jini サブシステムはそのインターフェースを実装している現在のサービスを見つけて、それらをサービスに動的に通知します。
簡単に言うと、作業項目をスペースに書き込みます。グリッド ノードは、スペースからトランザクション的にデータを読み取るようにセットアップされます。各グリッド ノードは作業項目を取得して処理し、結果をそのスペース (または別のスペース) に書き戻します。分散ノードは、書き戻される結果 (または、要求に応じて予測される結果のタイミング) を監視できます。
これはすべて Java であり、直線的に拡張されます。Jini なので、グリッド ノードは HTTP サーバーからクラスを動的にロードできるため、コードの更新を簡単に伝播できます。
他のヒント