13.5. Hot Rod ヘッダー

13.5.1. Hot Rod ヘッダーデータタイプ

Red Hat JBoss Data Grid の Hot Rod で使用されたすべてのキーおよび値はバイトアレイとして格納されます。ただし、特定のヘッダー値 (REST や Memcached の値) は以下のデータタイプを使用して格納されます。

表13.1 ヘッダーデータタイプ

データタイプ サイズ 説明
vInt 1〜5 バイト。 符号なし可変長整数値。
vLong 1〜9 バイト。 符号なし可変長ロング値。
文字列 - 文字列は常に UTF-8 エンコーディングを使用して表されます。

13.5.2. 要求ヘッダー

Hot Rod を使用して Red Hat JBoss Data Grid にアクセスする場合、要求ヘッダーの内容は以下のものから構成されます。

表13.2 要求ヘッダーフィールド

フィールド名 データタイプ/サイズ 説明
Magic 1 バイト ヘッダーが要求ヘッダーまたは応答ヘッダーであるかどうかを示します。
Message ID vLong メッセージ ID を含みます。この一意の ID は、要求に応答するときに使用されます。これにより、Hot Rod クライアントは非同期でプロトコルを実装できるようになります。
Version 1 バイト Hot Rod サーバーバージョンを含みます。
Opcode 1 バイト 関連する操作コードを含みます。要求ヘッダー内でopcode には要求操作コードのみを含めることができます。
Cache Name Length vInt キャッシュ名の長さを格納します。キャッシュ名の長さが 0 に設定され、キャッシュ名に値が提供されない場合、操作はデフォルトのキャッシュと対話します。
Cache Name 文字列 指定された操作のターゲットキャッシュの名前を格納します。この名前は、キャッシュ設定ファイルの事前定義済みキャッシュの名前に一致する必要があります。
Flags vInt システムに渡されるフラグを表す可変長の数値を含みます。さらに多くのバイトを読み取る必要があるかどうかを決定するために使用される最大ビットを除き、各ビットはフラグを表します。各フラグを表すためにビットを使用すると、フラグの組み合わせが連結された状態で表されます。
Client Intelligence 1 バイト サーバーに対するクライアント機能を示す値を含みます。
Topology ID vInt クライアントの最後の既知なビュー ID を含みます。基本的なクライアントはこのフィールドに値 0 を提供します。トポロジーまたはハッシュ情報をサポートするクライアントは、サーバーが現在のビュー ID に応答するまで値 0 (新しいビュー ID が現在のビュー ID を置き換えるためにサーバーにより返されるまで使用されます) を提供します。
Transaction Type 1 バイト 2 つの既知のトランザクションタイプのいずれかを表す値を含みます。現時点でサポートされている値は 0 のみです。
Transaction ID バイトアレイ 呼び出しに関連するトランザクションを一意に識別するバイトアレイを含みます。トランザクションタイプはこのバイトアレイの長さを決定します。Transaction Type の値が 0 に設定された場合、トランザクション ID は存在しません。

13.5.3. 応答ヘッダー

Hot Rod を使用して Red Hat JBoss Data Grid にアクセスする場合、応答ヘッダーの内容は以下のものから構成されます。

表13.3 応答ヘッダーフィールド

フィールド名 データタイプ 説明
Magic 1 バイト ヘッダーが要求または応答ヘッダーであるかどうかを示します。
Message ID vLong メッセージ ID を含みます。この一意の ID は、応答を元の要求とペアにするために使用されます。これにより、Hot Rod クライアントは非同期でプロトコルを実装できるようになります。
Opcode 1 バイト 関連する操作コードを含みます。応答ヘッダー内で opcode には応答操作コードのみを含めることができます。
Status 1 バイト 応答のステータスを表すコードを含みます。
Topology Change Marker 1 バイト 応答がトポロジー変更情報に含まれるかどうかを示すマーカーバイトを含みます。

13.5.4. トポロジー変更ヘッダー

Hot Rod を使用して Red Hat JBoss Data Grid にアクセスする場合は、応答ヘッダーが、異なるトポロジーまたはハッシュ配布を区別できるクライアントを探すことによりクラスターまたはビューフォーメーションの変更に応答します。Hot Rod サーバーは現在の topology ID と、クライアントにより送信された topology ID を比較し、2 つの値が異なる場合は、新しい topology ID を返します。

13.5.4.1. トポロジー変更マーカー値

以下は、応答ヘッダー内の Topology Change Marker フィールドの有効な値のリストです。

表13.4 Topology Change Marker フィールド値

説明
0 トポロジーの変更情報は追加されません。
1 トポロジーの変更情報が追加されます。

13.5.4.2. トポロジー認識クライアントのトポロジー変更ヘッダー

トポロジーの変更がサーバーにより返された場合、トポロジー認識クライアントに送信された応答ヘッダーには以下の要素が含まれます。

表13.5 トポロジー変更ヘッダーフィールド

応答ヘッダーフィールド データタイプ/サイズ 説明
Response Header with Topology Change Marker - -
Topology ID vInt -
Num Servers in Topology vInt クラスターで稼働している Hot Rod サーバーの数を含みます。一部のノードのみが Hot Rod サーバーを稼働している場合に、この値は、クラスター全体のサブセットになることがあります。
mX: Host/IP Length vInt 個別クラスターメンバーのホスト名または IP アドレスの長さを含みます。可変長により、この要素にはホスト名、IPv4、および IPv6 アドレスを含めることができます。
mX: Host/IP Address 文字列 個別クラスターメンバーのホスト名または IP アドレスを含みます。Hot Rod クライアントはこの情報を使用して個別クラスターメンバーにアクセスします。
mX: Port 符号なしショート。2 バイト クラスターメンバーと通信するために Hot Rod クライアントが使用するポートを含みます。
トポロジー内の各サーバーに対して、接頭辞 mX の 3 つのエントリーが繰り返されます。トポロジーの情報フィールド内の最初のサーバーには接頭辞 m1 が付けられ、X の値が num servers in topology フィールドで指定されたサーバーの数と等しくなるまで、各追加サーバーに対して数値が 1 つずつ増分されます。

13.5.4.3. ハッシュ配布認識クライアントのトポロジー変更ヘッダー

トポロジーの変更がサーバーにより返された場合、クライアントに送信された応答ヘッダーには以下の要素が含まれます。

表13.6 トポロジー変更ヘッダーフィールド

フィールド データタイプ/サイズ 説明
Response Header with Topology Change Marker - -
Topology ID vInt -
Number Key Owners 符号なしショート、2 バイト 配布された各キーに対してグローバルに設定されたコピーの数を含みます。配布がキャッシュで設定されていない場合は、値 0 を含みます。
Hash Function Version 1 バイト 使用中のハッシュ機能へのポインターを含みます。配布がキャッシュで設定されていない場合は、値 0 を含みます。
Hash Space Size vInt ハッシュコード生成に関連するすべてのモジュール計算のために JBoss Data Grid により使用されるモジュールを含みます。クライアントはこの情報を使用して正しいハッシュ計算をキーに適用します。配布がキャッシュで設定されていない場合は、値 0 を含みます。
Number servers in topology vInt クラスター内で稼働している Hot Rod サーバーの数を含みます。一部のノードのみが Hot Rod サーバーを稼働している場合に、この値は、クラスター全体のサブセットになることがあります。また、この値はヘッダーに含まれるホストとポートのペアの数を表します。
Number Virtual Nodes Owners vInt 設定された仮想ノードの数を含みます。仮想ノードが設定されていない場合、または配布がキャッシュで設定されていない場合は、値 0 を含みます。
mX: Host/IP Length vInt 個別クラスターメンバーのホスト名または IP アドレスの長さを含みます。可変長により、この要素にはホスト名、IPv4、および IPv6 アドレスを含めることができます。
mX: Host/IP Address 文字列 個別クラスターメンバーのホスト名または IP アドレスを含みます。Hot Rod クライアントはこの情報を使用して個別クラスターメンバーにアクセスします。
mX: Port 符号なしショート、2 バイト クラスターメンバーと通信するために Hot Rod クライアントが使用するポートを含みます。
mX: Hashcode 4 バイト
トポロジー内の各サーバーに対して、接頭辞 mX の 3 つのエントリーが繰り返されます。トポロジーの情報フィールド内の最初のサーバーには接頭辞 m1 が付けられ、X の値が num servers in topology フィールドで指定されたサーバーの数と等しくなるまで、各追加サーバーに対して数値が 1 つずつ増分されます。