第3章 Data Grid Server エンドポイント

Data Grid Server のエンドポイントは、Hot Rod および REST プロトコルを介して、キャッシュマネージャーへのクライアントアクセスを提供します。

3.1. Data Grid Server エンドポイント

3.1.1. Hot Rod

Hot Rod は、テキストベースのプロトコルと比較して、データへのアクセス時間を短縮し、パフォーマンスを向上するために設計されたバイナリー TCP クライアントサーバープロトコルです。

Data Grid は、Java、C++、C#、Node.js、およびその他のプログラミング言語で Hot Rod クライアントライブラリーを提供します。

トポロジーの状態遷移

Data Grid はトポロジーキャッシュを使用して、クライアントにクラスタービューを提供します。トポロジーキャッシュには、内部 JGroups トランスポートアドレスを公開された Hot Rod エンドポイントにマッピングするエントリーが含まれます。

クライアントが要求を送信すると、Data Grid サーバーは、要求ヘッダーのトポロジー ID をキャッシュからのトポロジー ID と比較します。クライアントに古いトポロジー ID がある場合は、Data Grid サーバーは新しいトポロジービューを送信します。

クラスタートポロジービューを使用すると、Hot Rod クライアントは、ノードがいつ参加および離脱するかを即座に検出できるため、動的な負荷分散とフェイルオーバーが可能になります。

分散キャッシュモードでは、一貫性のあるハッシュアルゴリズムにより、Hot Rod クライアント要求をプライマリー所有者に直接ルーティングすることもできます。

3.1.2. REST

Data Grid は、HTTP クライアントがデータにアクセスし、クラスターを監視および保守し、管理操作を実行できるようにする RESTful インターフェイスを公開します。

標準の HTTP ロードバランサーを使用して、クライアントに負荷分散およびフェイルオーバー機能を提供できます。ただし、HTTP ロードバランサーは静的クラスタービューを維持し、クラスタートポロジーの変更が発生したときに手動で更新する必要があります。

3.1.3. Memcached

Data Grid は、リモートクライアントアクセス用の Memcached テキストプロトコルの実装を提供します。

重要

Memcached エンドポイントは非推奨であり、今後のリリースで削除される予定です。

Data Grid Memcached エンドポイントは、レプリケートおよび分散キャッシュモードを使用したクラスタリングをサポートします。

Cache::Memcached Perl クライアントなどの一部の Memcached クライアント実装は、クラスタートポロジーの変更時に手動更新を必要とする Data Grid サーバーアドレスの静的リストで負荷分散およびフェイルオーバー検出機能を提供できます。

3.1.4. エンドポイントプロトコルの比較

 Hot RodHTTP / REST

トポロジー対応

Y

N

ハッシュ対応

Y

N

暗号化

Y

Y

認証

Y

Y

条件付き操作

Y

Y

バルク操作

Y

N

トランザクション

Y

N

リスナー

Y

N

クエリー

Y

Y

実行

Y

N

クロスサイトフェイルオーバー

Y

N

3.1.5. Hot Rod クライアントの Data Grid Server との互換性

Data Grid Server を使用すると、異なるバージョンの Hot Rod クライアントを接続することができます。たとえば、Data Grid クラスターへの移行またはアップグレードの際に、Hot Rod クライアントのバージョンが Data Grid Server よりも低い Data Grid バージョンになることがあります。

ヒント

Data Grid は、最新の機能およびセキュリティー機能強化の恩恵を受けるために、最新の Hot Rod クライアントバージョンを使用することを推奨しています。

Data Grid 8 以降

Hot Rod プロトコルバージョン 3.x は、Data Grid Server のクライアントに対して、可能な限り高いバージョンを自動的にネゴシエートします。

Data Grid 7.3 以前

Data Grid Server バージョンよりも高い Hot Rod プロトコルバージョンを使用するクライアントは、infinispan.client.hotrod.protocol_version プロパティーを設定する必要があります。