GigaSpaces XAP は、分散アプリケーションサーバで、インメモリでデータグリッド(data grid)を持っている。 GigaSpaces は、商用のクラスタ化された JavaSpaces の実装として始まり、後に、ローカルキャッシング、追い出し(エヴィクション)そしてクエリのサポートのようなインメモリのデータグリッド機能を含むように拡張された。更に、 GigaSpacesは、エンタプライズアプリケーションのスケーラビリティと小さな待ち時間に対する、より広い解決策として、 Space based architecture(SBA) を導入した。このSBAのコアには、データストレージやメッセージングのようなミドルウェアの機能をまとめた、拡張され、そして軽量の Springコンテナが配置されている。このコンテナは、後で、グリッド中の他のマシンにコピーされ、リニアなスケーラビリティを提供する。最近のバージョンでは、ユーザー・エクスペリエンス と分散アプリケーション管理の単純化が、焦点になっている。
XAP 7.1のリリースは、いくつものテーマを含んでいる:
弾力的なミドルウェアサービス
ミドルウェアサービスは、 Amazon EC2互換のミドルウェアサービスを提供し、デプロイと使用法を簡素化することを狙っている。このテーマの最初のマイルストーンは、弾力的なデータグリッド機能を含む。
古い、低レベルの設定(すなわち、ホストバインディング、IPアドレス、そしてデータグリッド パーティションの数)は、いくつかの高レベルな詳細とデータグリッドの初期と最大の能力の定義に替わる。この新しい弾力的なミドルウェアサービスで、システムは、利用できるハードウェアリソースを確認するか、必要なリソースをセットアップする(仮想化された環境の場合)、そしてプリセットされた設定でデータグリッドをスタートする。そのAPIは、以下のようになる:
elasticServiceManager.deploy(new ElasticDataGridDeployment("mygrid") .isolationLevel(IsolationLevel.DEDICATED) .highlyAvailable(true) .elasticity("2GB", "6GB") .jvmSize("512MB") .addSla(new MemorySla(70)));
自動化された設定により、スケーラビリティと耐障害性 が透過的になる。ノード間の負荷分散、システムによる、故障したデータグリッド パーテションの回復、そして一定のメモリスレッショルドを超えたときに、デプロイされたマシン間でのデータ移動によって、このことが実現されている。
仮想化互換性
新しいリリースは、 VMWare, GoGridそして RackSpaceのような、いくつもの仮想化プラットフォームでテストされ、互換性がある。近い将来、 Terremark と Citrix Xen 加えることが計画されている。
データクエリ
データグリッドへのクエリ機能が、いくつか改善されて、パス式を使って、ネストされたオブジェクトのフィールドへのクエリがサポートされた:
SQLQuery query = new SQLQuery(Person.class, "address.street.number = 1");
新しいアノテーションのセットを使って、spaceクエリのインデックス化は、親クラスからコントロールされる:
@SpaceClass public class Person { private String lastName; private String firstName; private Integer age; ... @SpaceIndex(type=IndexType.BASIC) public String getFirstName() {return firstName;} public void setFirstName(String firstName) {this.firstName = firstName;} @SpaceIndex(type=IndexType.BASIC) public String getLastName() {return lastName;} public void setLastName(String name) {this.lastName = name;} @SpaceIndex(type=IndexType.EXTENDED) public String getAge() {return age;} public void setAge(String age) {this.age = age;} }
管理アプリケーション
管理ツールの新しいwebインタフェースが、このバージョンで導入され、 GWT/AJAX ベースのダッシュボードに、全クラスタとその実行コンポーネントのリアルタイムな集計データがグラフと表で表示される(figure 1)。既存の管理GUIは、前の7.0で導入され、スレッドのスナップショット機能そして登録されてた全JVMを集約して、ログを監視する機能が追加された。スレッドのダンプ機能もAPI経由で利用できる。
Figure 1: web管理ダッシュボード
内蔵の Spring 3.0
このXAP 7.1サーバは、 Spring 3.0を内蔵していて、 Spring 2.5以前のバージョンへの後方互換性をサポートしている。しかし、デプロイ前に新しい Spring 3ディストリビューションでアプリケーションを再コンパイルすることが推奨されている。
パフォーマンスの改善
このバージョンでのパフォーマンスの改善には:
- コンカレント インデックススキャンのメカニズムは、できるだけ 競合フリー であるように書き換えられた
- 複雑なクエリの場合は、SQLクエリのマルチスレッドなコンカレント処理が有効となる
- データ構造の変更とより新しい同期モジュール(すなわち java.util.concurrent)によってトランザクション処理時間が改善された
スケールアウトの手順
既存のアプリケーションが XAP 7.1のフレームワークを使うために、アプリケーションが取り組む問題領域に依存した 段階的な方法 がある。その手順を明確にすると:
- Web層: 動的な負荷バランスのためにXAPを使って標準的なWARファイルをデプロイする
- メッセージング/イベント: メッセージングのために既存の Message Driven Beans をXAPイベント・リスナーで置き換える
- リモーティング: POJOにアノテーションを加えるか Spring XML設定を使って、リモート・インボケーションと非同期リモーティングを統合する
- データアクセス (基本): GigaSpaces XAPを統合する最初のレベルは、 Hibernateの第2レベルのキャッシュとして使う。この目的は、ほとんどリードの場合に、著しいパフォーマンス向上を提供することである
- データアクセス(上級): データモデル構造を分割して、DAOを直接XAPのインメモリ データグリッドへのアクセスに変換して、リードとライトのパフォーマンスが改善される
- トランザクション: Springベースのアプリケーションは、移行処置が要らない。他のアプリケーションは、Springトランザクションフレームワークを使うことが推奨されている
XAP 7.1の早期リリース版が ドキュメントとダウンロードで入手できる。