JavaSpaces テクノロジの実際の実用的な用途はありますか? また、それはどのように正確に実装されていますか?
6 に答える
現在、疎結合プロセスを調整するために、javaspace (Sun アウトリガー実装) を使用しています。その背後にあるアイデアは説得力があり、API は非常にシンプルです。実際の実装には問題がありました。Jini上に構築されているため、スペースを作成するには5または6プロセスが必要です. そして、少なくとも Sun の実装では、特定のポートを介して通信させる方法がないため、ファイアウォールが少し面倒です。
私たちが遭遇したもう 1 つの問題は、空間に暗黙の順序がないことです。したがって、5 つのオブジェクトを配置し、読み取り/テイクのテンプレートが 5 つすべてに一致する場合、どのオブジェクトが取得されるかは不明です。アプリケーションによっては、これが問題になる場合とそうでない場合があります。
GigaSpacesは JavaSpaces の成熟したバージョンです。静かに保たれている金融アプリケーションで広く使用されています。
実装に関しては、基本的にJini上のトランザクション オブジェクト データベースです。クエリは db4o に似ています。
金融アプリケーションで使用されているのを見たことがあります。主にコンピューティング ワーカー (グリッド スタイル) を管理するためのもので、エントリはフロント層アプリケーションからスペースに書き込まれ、作業が必要であることを示すフィールドで照合することによってワーカーによって引き出されます。結果はスペースに書き戻され、最前層のアプリによって登録がトリガーnotify
され、完成した作業が読み取られます。
計算ワーカーの場合は問題ありませんが、順序付けの欠如が問題になる場合があります (予測不可能な場合のみ) - 一部の実装には、FIFO 順序付けを強制する機能があります。永続的であるため、長期のデータ保存にも使用されましたが、それは良い考えではなかったと思います. 管理ツールは管理しやすくするのに十分ではなく、データ量が原因でパフォーマンスが低下しました。
Dan Creswell のBlitz JavaSpaces実装が使用されました。これは幅広い機能 (一時モードまたは永続モードで実行可能) を持ち、堅牢 (トランザクション ログを使用) で高性能を維持するように設計されており、非常に調整可能です。他の Jini サービスと同様に、特定のポートでリッスンするように「エクスポーター」を構成して、ファイアウォールを容易にすることができます。SSL トランスポートと完全な PKI も使用され、Jini の通信の抽象化によって可能になりました。
Gigaspaces は、さまざまな方法で仕様を拡張することで革新を続けている唯一の実装だと思います。これはうれしいことです。さまざまなユースケースに適合するようにし、クラスタリングや高可用性などの実装機能を追加しました。ただし、Gigaspaces がかなり独占的なものであることを考えると、コミュニティでこれらの機能の 2 つ以上の実装が見られればもっとうれしいので、それを使用するのは心配です。
ホテルの予約システムであるOrbitzはJiniで運営されていると思います。
Vin SimmonsへのインタビューであるJavaPosseエピソード#82 、#84、および#86に基づいて、このテクノロジーは、静かな場所で不幸な軍事または金融アプリケーションで使用されることがあります。
数年前まで使っていましたが、今もほとんど変わっていません。
@キース:(少なくとも以前は)すべてのサービスを単一のプロセス/ JVMで開始することは可能であり、これを行う方法に関するドキュメントがそこにあると思います。
Jini/Javaspaces は、ヨーロッパのいくつかの大規模なアプリケーション (発券、携帯電話など) で使用されていると思います。GE Aircraft も研究と分析に使用しています。
Texas Tech のSORCER ラボには、Jini/Javaspace の上に構築された大規模な SOA アーキテクチャがあり、そこでいくつかのヘルプを見つけることができるかもしれません。