第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 Rod | HTTP / 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
プロパティーを設定する必要があります。
関連情報