20.6. Hot Rod プロトコル


以下の記事では、カスタム TCP クライアント/サーバーホットーティングプロトコルの各バージョンに関する詳細情報を説明します。

  • hotgitops Protocol 1.0
  • hotgitops Protocol 1.1
  • hotgitops Protocol 1.2
  • hotgitops Protocol 1.3
  • hotgitops Protocol 2.0
  • hotgitops Protocol 2.1
  • hotgitops Protocol 2.2
  • hotgitops Protocol 2.3
  • hotgitops Protocol 2.4
  • hotgitops Protocol 2.5
  • hotgitops Protocol 2.6
  • hotgitops Protocol 2.7
  • hotgitops Protocol 2.8
  • hotgitops Protocol 2.9

20.6.1. hotgitops Protocol 1.0

Infinispan のバージョン

このバージョンのプロトコルは Infinispan 4.1.0.Final 以降実装されます。

重要

キーと値はすべて送信され、バイトアレイとして保存されます。hotgitops では、そのタイプに関しては想定されていません。

その他のタイプについての明確化:

  • vInt: Variable-length 整数は圧縮された正の整数として定義され、各バイトの上位ビットがより多くのバイトを読み取る必要があるかどうかを示します。7 つのビットが大きくなると、整数値に大幅なビットが高まるため、デコードが効率的になります。したがって、ゼロから 127 までの値は 1 バイトに保存され、128 から 16,383 の値は 2 バイトに保存されます。

    Expand
    最初のバイト2 バイト3 バイト

    0

    00000000

      

    1

    00000001

      

    2

    00000010

      

    …​

       

    127

    01111111

      

    128

    10000000

    00000001

     

    129

    10000001

    00000001

     

    130

    10000010

    00000001

     

    …​

       

    16,383

    11111111

    01111111

     

    16,384

    10000000

    10000000

    00000001

    16,385

    10000001

    10000000

    00000001

    …​

       
  • 署名済み vInt: 上記の vInt は負の値をエンコードすることもできますが、終了値を小さくしても常に最大サイズ(5 バイト)を使用します。負の値のペイロードも小さくなるべく、署名された vInt は vInt エンコーディングに加えて ZigZag エンコーディングを使用します。詳細は、こちらを参照してください。
  • VLong: vInt と同様の未署名の変数長の長い値を参照し、長い値に適用されます。1 バイトから 9 バイトの長さ。
  • string : 文字列は常に UTF-8 エンコーディングを使用して表されます。

20.6.1.1. リクエストヘッダー

リクエストのヘッダーは以下で構成されています。

Expand
表20.1 要求ヘッダー
フィールド名サイズ

magic

1 バイト

0xA0 = request

メッセージ ID

vLong

応答にコピーされるメッセージの ID。これにより、Hot336 クライアントが非同期的にプロトコルを実装できます。

Version

1 バイト

hotgitops サーバーバージョン。この場合、これは 10 です。

opcode

1 バイト

Request operation code:
0x01 = put(since 1.0)
0x03 = get(since 1.0)
0x05 = putIfAbsent(since 1.0)
0x07 = replace(since 1.0)
0x09 = replaceIfUnmodified(since 1.0)
0x0B = remove(since 1.0)
0x0 D = removeIfUnmodified(since 1.0)
0x0F = containsKey(since 1.0)
0x11 = getWithVersion(since 1.0)
0x13 = clear(since 1.0)
0x15 = stats(since 1.0)
0x17 = ping(since 1.0)
0x19 = bulkGet(since 1.2)
0x1B = getWithMetadata(since 1.2)
0x1D = bulkGetKeys(since 1.2)
0x1F = query(since 1.3)
0x21 = authMechList(since 2.0)
0x23 = auth(since 2.0)
0x25 = addClientListener(since 2.0)
0x27 = removeClientListener(since 2.0)
0x29 = size(since 2.0)
0x2B = exec(since 2.1)
0x2D = putAll(since 2.1)
0x2F = getAll(since 2.1)
0x31 = iterationStart(since 2.3)
0x33 = iterationNext(since 2.3)
0 x35 = iterationEnd(since 2.3)
0x37 = getStream(以降 2.6)
0x39 = putStream(2.6 以降)

キャッシュ名の長さ

vInt

キャッシュ名の長さ。渡された長さが 0(キャッシュ名なし)の場合、操作はデフォルトのキャッシュと対話します。

キャッシュ名

string

動作させるキャッシュの名前。この名前は、Red Hat Data Grid 設定ファイルの事前に定義されたキャッシュの名前と一致している必要があります。

Flags

vInt

システムに渡されるフラグを表す変数長番号。各フラグはビットで表されます。このフィールドは変数の長さとして送信されるため、バイトで最も大きなビットを使用して、より多くのバイトを読み取る必要があるかどうかを判断するため、このビットはフラグを表します。このモデルを使用すると、フラグを短いスペースに統合できます。各フラグの現在の値は以下の通りです。
0x0001 = force return previous value

クライアントのインテリジェンス

1 バイト

このバイトヒントは、クライアント機能のサーバーをヒントします。
0x01 = basic client(クラスターまたはハッシュ情報ではない)
0x02 = topology-aware クライアント、クラスター情報に関心のある 0x03 = hash-distribution-aware クライアント
0x03 = hash-distribution-aware クライアント(クラスターおよびハッシュ情報の両方に関心がある)

トポロジー ID

vInt

このフィールドは、クライアントの最後の既知のビューを表します。基本的なクライアントは、このフィールドには 0 のみを送信します。トポロジー対応または hash-distribution 対応のクライアントは、現在のビュー ID でサーバーから応答を受け取るまで 0 を送信します。その後、応答で新しいビュー ID を受け取るまで、ビュー ID を送信する必要があります。

トランザクションタイプ

1 バイト

これは、以下のよく知られたトランザクションタイプの 1 つが含まれる 1 バイトフィールドです(このバージョンのプロトコルでは、サポートされる唯一のトランザクションタイプは 0)。
0 = Non-transactional 呼び出し、またはクライアントはトランザクションをサポートしません。後続の TX_ID フィールドは省略されます。
1 = x/Open XA トランザクション ID(XID)。これはよく知られており、固定サイズの形式です。

トランザクション ID

バイト配列

この呼び出しに関連するトランザクションを一意に識別するバイトアレイ。その長さはトランザクションタイプにより決定されます。トランザクションタイプが 0 の場合は、トランザクション ID は存在しません。

20.6.1.2. レスポンスヘッダー

応答のヘッダーは以下で構成されています。

Expand
表20.2 応答ヘッダー
フィールド名サイズ

magic

1 バイト

0xA1 = response

メッセージ ID

vLong

メッセージの ID。応答が送信されるリクエストと一致します。

opcode

1 バイト

response operation code:
0x02 = put(since 1.0)
0x04 = get(since 1.0)
0x06 = putIfAbsent(since 1.0)
0x08 = replace(since 1.0)
0x0A = replaceIfUnmodified(since 1.0)
0x0C = remove(since 1.0)
0x 0e = removeIfUnmodified(since 1.0)
0x10 = containsKey(since 1.0)
0x12 = getWithVersion(since 1.0)
0x14 = clear(since 1.0)
0x16 = stats(since 1.0)
0x18 = ping(since 1.0)
0x1A = bulkGet(since 1.0)
0x1C = getWithMetadata(since 1.2)
0x1E = bulkGetKeys(since 1.2)
0x20 = query(since 1.3)
0x22 = authMechList(since 2.0)
0x24 = auth(since 2.0)
0x26 = addClientListener(since 2.0)
0x28 = removeClientListener(since 2.0)
0x2A = size(since 2.0)
0x2C = exec(since 2.1)
0x2E = putAll(since 2.1)
0x30 = getAll(since 2.1)
0x32 = iterationStart(since 2.3)
0x34 = iterationNext(since 2.3)
0 x36 = iterationEnd(since 2.3)
0x38 = getStream(since 2.6)
0x3A = putStream(since 2.6)
0x50 = error(since 1.0)

ステータス

1 バイト

status of the response, possible values:
0x00 = No error
0x01 = Not put/removed/replaced
0x02 = Key does not exist
0x81 = Invalid magic or message id
0x82 = Unknown command
0x83 = Unknown version
0x84 = Request parsing error
0x85 = Server Error
0x86 = Command timed out

トポロジー変更マーカー

string

これは、応答の前にトポロジーの変更情報が含まれるかどうかを示すマーカーバイトです。トポロジーが変更されないと、このバイトの内容は 0 になります。トポロジーが変更されると、その内容は 1 になります。

Important

0x8 …​ で始まる例外のステータス応答は、エラーメッセージの長さ(vInt として)およびエラーメッセージ自体を String として続きます。

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

以下のセクションでは、クラスターまたはビューのフォーマットが変更されている場合に、応答ヘッダーがトポロジー対応またはハッシュディストリビューション対応のクライアントを検索する方法を説明します。現在のトポロジー ID とクライアントが送信された 1 つに基づいて新しいトポロジーを送信するかどうかを決定するサーバーであることに注意してください。これが異なる場合は、新しいトポロジーを送り返します。

20.6.1.4. Topology-Aware クライアントトポロジー変更ヘッダー

これは、トポロジーの変更が返信される際に応答ヘッダーとして受信されるトポロジー対応のクライアントです。

Expand
フィールド名サイズ

トポロジー変更マーカーのある応答ヘッダー

variable

先のセクションを参照してください。

トポロジー ID

vInt

トポロジー ID

トポロジーの num サーバー

vInt

クラスター内で稼働している Hotでサーバーの数。これは、これらのノードの一部のみが HotTEMPLATES サーバーを実行している場合に、クラスター全体のサブセットになる可能性があります。

M1: ホスト/IP 長

vInt

Hotgitops クライアントがアクセスするために使用できる各クラスターメンバーのホスト名または IP アドレスの長さ。ここで変数の長さを使用すると、ホスト名、IPv4 アドレス、および IPv6 アドレスに対応できます。

M1: ホスト/IP アドレス

string

Hot336 クライアントがアクセスに使用できる個別のクラスターメンバーのホスト名または IP アドレスが含まれる文字列。

M1: ポート

2 バイト(未署名)

Hotgitops クライアントがこのクラスターメンバーとの通信に使用できるポート。

m2: ホスト/IP の長さ

vInt

 

m2: ホスト/IP アドレス

string

 

m2: ポート

2 バイト(未署名)

 

…​etc

  

20.6.1.5. Distribution-Aware クライアントトポロジー変更ヘッダー

これは、トポロジーの変更が返信される際に応答ヘッダーとして受信される hash-distribution 対応のクライアントです。

Expand
フィールド名サイズ

トポロジー変更マーカーのある応答ヘッダー

variable

先のセクションを参照してください。

トポロジー ID

vInt

トポロジー ID

num Key Owners

2 バイト(未署名)

各 Red Hat Data Grid 分散キーのコピーをグローバルに設定した数

ハッシュ関数バージョン

1 バイト

使用中の特定のハッシュ関数を参照するハッシュ関数のバージョン。詳細は「 Hotgitops hash functions 」を参照してください。

ハッシュスペースサイズ

vInt

ハッシュコード生成に関連するすべてのモジュールの Red Hat Data Grid によって使用されるモジュール。キーに正しいハッシュ計算を適用するには、クライアントでこの情報が必要になる可能性があります。

トポロジーの num サーバー

vInt

クラスター内で稼働している Red Hat Data Grid Hotgitops サーバーの数。これは、これらのノードの一部のみが HotTEMPLATES サーバーを実行している場合に、クラスター全体のサブセットになる可能性があります。

M1: ホスト/IP 長

vInt

Hotgitops クライアントがアクセスするために使用できる各クラスターメンバーのホスト名または IP アドレスの長さ。ここで変数の長さを使用すると、ホスト名、IPv4 アドレス、および IPv6 アドレスに対応できます。

M1: ホスト/IP アドレス

string

Hot336 クライアントがアクセスに使用できる個別のクラスターメンバーのホスト名または IP アドレスが含まれる文字列。

M1: ポート

2 バイト(未署名)

Hotgitops クライアントがこのクラスターメンバーと組み合わせるために使用できるポート。

M1: Hashcode

4 バイト

ユーザーが CSA を適用しているクラスターメンバーがどのクラスターメンバーであるかをインデントできるクラスターメンバーのハッシュコードを表す 32 ビット整数。

m2: ホスト/IP の長さ

vInt

 

m2: ホスト/IP アドレス

string

 

m2: ポート

2 バイト(未署名)

 

m2: Hashcode

4 バイト

 

…​etc

  

ハッシュヘッダーはサーバーで使用される一貫性のあるハッシュアルゴリズムに依存し、キャッシュが対話する要素であるため、hash-distribution 対応ヘッダーは特定のキャッシュをターゲットとする操作にのみ返すことができることに注意してください。現在 ping コマンドはキャッシュをターゲットにしません( ISPN-424に従って変更されます)。ハッシュトポロジー対応のクライアント設定で ping コマンドを呼び出すと、「Num Key Owners」、「Hash Function Version」、「Hash Function Version」、「Hash Function Version」、個々のホストのハッシュコードはすべて 0 に設定されたハッシュディストリビューション対応ヘッダーを返します。また、ディストリビューションで設定されていないキャッシュを対象とする hash-topology 対応のクライアント設定を持つ操作への応答として、このタイプのヘッダーも返されます。

20.6.1.6. 操作

get(0x03)/Remove(0x0B)/ContainsKey(0x0F)/GetWithVersion(0x11)

一般的な要求形式:

Expand
フィールド名サイズ

ヘッダー

variable

要求ヘッダー

キーの長さ

vInt

キーの長さ。vint のサイズは最大 5 バイトで、理論では Integer.MAX_VALUE よりも大きな数値を生成することができます。ただし、Java では Integer.MAX_VALUE を超える単一のアレイを作成できないため、プロトコルは vint アレイの長さを Integer.MAX_VALUE に制限します。

キー

バイト配列

値が要求されているキーが含まれるバイトアレイ。

応答を取得します(0x04)。

Expand
フィールド名サイズ

ヘッダー

variable

応答ヘッダー

応答のステータス

1 バイト

0x00 = success(キーの取得の場合)
0x02 = if key does not exist

値の長さ

vInt

成功した場合、値の長さ

バイト配列

成功した場合、要求された値。

応答を削除します(0x0C):

Expand
フィールド名サイズ

ヘッダー

variable

応答ヘッダー

応答のステータス

1 バイト

0x00 = success(キーが削除された場合)
0x02 = if key does not exist

以前の値の長さ

vInt

以前の値フラグが要求で送信され、キーが削除されると、以前の値の長さが返されます。キーが存在しない場合は、値の長さは 0 になります。フラグが送信されていない場合、値の長さはありません。

以前の値

バイト配列

以前の値フラグが要求で送信され、キーが削除された場合、以前の値。

ContainsKey 応答(0x10):

Expand
フィールド名サイズ

ヘッダー

variable

応答ヘッダー

応答のステータス

1 バイト

0x00 = success, if key exists
0x02 = if key does not exist

GetWithVersion response (0x12):

Expand
フィールド名サイズ

ヘッダー

variable

応答ヘッダー

応答のステータス

1 バイト

0x00 = success(キーの取得の場合)
0x02 = if key does not exist

エントリーバージョン

8 バイト

既存のエントリーの変更の一意の値。このプロトコルは、entry_version 値が連続して行われるという義務はありません。更新ごとにキーレベルで一意となる必要があります。

値の長さ

vInt

成功した場合、値の長さ

バイト配列

成功した場合、要求された値。

BulkGet

要求(0x19):

Expand
フィールド名サイズ

ヘッダー

variable

要求ヘッダー

エントリー数

vInt

サーバーが返す Red Hat Data Grid エントリーの最大数(entry == key + 関連付けられた値)。CacheLoader.load(int)をサポートするために必要です。0 の場合、すべてのエントリーが返されます(CacheLoader.loadAll()に必要)。

応答(0x20):

Expand
フィールド名サイズ

ヘッダー

variable

応答ヘッダー

応答のステータス

1 バイト

0x00 = success, data follows

詳細表示

1 バイト

複数のエントリーをストリームから読み取る必要があるかどうかを表す 1 つのバイト。そのため、1 に設定すると、エントリーが後に続くことを意味しますが、0 に設定された場合はストリームの最後となり、他のエントリーは読み取られません。BulkGet の詳細は、こちらを参照してください。

キー 1 長

vInt

キーの長さ

キー 1

バイト配列

取得されるキー

値 1 の長さ

vInt

値の長さ

値 1

バイト配列

取得した値

詳細表示

1 バイト

 

キー 2 長

vInt

 

キー 2

バイト配列

 

値 2 の長さ

vInt

 

値 2

バイト配列

 

…​

  

Put (0x01)/PutIfAbsent (0x05)/Replace (0x07)

一般的な要求形式:

Expand
フィールド名サイズ

ヘッダー

variable

要求ヘッダー

キーの長さ

vInt

キーの長さ。vint のサイズは最大 5 バイトで、理論では Integer.MAX_VALUE よりも大きな数値を生成することができます。ただし、Java では Integer.MAX_VALUE を超える単一のアレイを作成できないため、プロトコルは vint アレイの長さを Integer.MAX_VALUE に制限します。

キー

バイト配列

値が要求されているキーが含まれるバイトアレイ。

有効期間

vInt

エントリーの有効期間が許可される秒数。秒数が 30 日を超える場合、この秒数は UNIX 時間として扱われるため、1/1/1970 からの秒数を表します。0 に設定すると、ライフスパンは無制限になります。

最大 ID

vInt

キャッシュからエビクトされる前に、エントリーをアイドル状態でいられる秒数。0 の場合は、最大アイドル時間がありません。

値の長さ

vInt

値の長さ

byte-array

保存する値

応答を追加します(0x02)。

Expand
フィールド名サイズ

ヘッダー

variable

応答ヘッダー

応答のステータス

1 バイト

0x00 = success(保存されている場合)

以前の値の長さ

vInt

以前の値フラグが要求で送信され、キーが配置されている場合、以前の値の長さが返されます。キーが存在しない場合は、値の長さは 0 になります。フラグが送信されていない場合、値の長さはありません。

以前の値

バイト配列

以前の値フラグが要求で送信され、キーが配置された場合、以前の値。

応答(0x08)を置き換えます。

Expand
フィールド名サイズ

ヘッダー

variable

応答ヘッダー

応答のステータス

1 バイト

0x00 = success(保存された場合は
0x01 = if store does not exist)

以前の値の長さ

vInt

リクエストで以前の値フラグを強制的に返すと、前の値の長さが返されます。キーが存在しない場合は、値の長さは 0 になります。フラグが送信されていない場合、値の長さはありません。

以前の値

バイト配列

リクエストで以前の値フラグが送信され、キーが置き換えられた場合に、以前の値が返されます。

PutIfAbsent 応答(0x06):

Expand
フィールド名サイズ

ヘッダー

variable

応答ヘッダー

応答のステータス

1 バイト

0x00 = success(保存された場合は
0x01 = if store was exist)

以前の値の長さ

vInt

リクエストで以前の値フラグを強制的に返すと、前の値の長さが返されます。キーが存在しない場合は、値の長さは 0 になります。フラグが送信されていない場合、値の長さはありません。

以前の値

バイト配列

リクエストで以前の値フラグが送信され、キーが置き換えられた場合に、以前の値が返されます。

ReplaceIfUnmodified

要求(0x09):

Expand
フィールド名サイズ

ヘッダー

variable

要求ヘッダー

キーの長さ

vInt

キーの長さ。vint のサイズは最大 5 バイトで、理論では Integer.MAX_VALUE よりも大きな数値を生成することができます。ただし、Java では Integer.MAX_VALUE を超える単一のアレイを作成できないため、プロトコルは vint アレイの長さを Integer.MAX_VALUE に制限します。

キー

バイト配列

値が要求されているキーが含まれるバイトアレイ。

有効期間

vInt

エントリーの有効期間が許可される秒数。秒数が 30 日を超える場合、この秒数は UNIX 時間として扱われるため、1/1/1970 からの秒数を表します。0 に設定すると、ライフスパンは無制限になります。

最大 ID

vInt

キャッシュからエビクトされる前に、エントリーをアイドル状態でいられる秒数。0 の場合は、最大アイドル時間がありません。

エントリーバージョン

8 バイト

GetWithVersion 操作によって返される値を使用します。

値の長さ

vInt

値の長さ

byte-array

保存する値

応答(0x0A):

Expand
フィールド名サイズ

ヘッダー

variable

応答ヘッダー

応答のステータス

1 バイト

0x00 = success, if replaced
0x01 = if replace because key was changed
0x02 = if replaced because because key does not exist because

以前の値の長さ

vInt

リクエストで以前の値フラグを強制的に返すと、前の値の長さが返されます。キーが存在しない場合は、値の長さは 0 になります。フラグが送信されていない場合、値の長さはありません。

以前の値

バイト配列

リクエストで以前の値フラグが送信され、キーが置き換えられた場合に、以前の値が返されます。

RemoveIfUnmodified

要求(0x0D):

Expand
フィールド名サイズ

ヘッダー

variable

要求ヘッダー

キーの長さ

vInt

キーの長さ。vint のサイズは最大 5 バイトで、理論では Integer.MAX_VALUE よりも大きな数値を生成することができます。ただし、Java では Integer.MAX_VALUE を超える単一のアレイを作成できないため、プロトコルは vint アレイの長さを Integer.MAX_VALUE に制限します。

キー

バイト配列

値が要求されているキーが含まれるバイトアレイ。

エントリーバージョン

8 バイト

GetWithMetadata 操作によって返される値を使用します。

応答(0x0E):

Expand
フィールド名サイズ

ヘッダー

variable

応答ヘッダー

応答のステータス

1 バイト

0x00 = success(削除されている場合)
0x01 = if remove did not occurred because key was changed
0x02 = if not removed because key does not exist

以前の値の長さ

vInt

リクエストで以前の値フラグを強制的に返すと、前の値の長さが返されます。キーが存在しない場合は、値の長さは 0 になります。フラグが送信されていない場合、値の長さはありません。

以前の値

バイト配列

以前の値フラグが要求で送信され、キーが削除された場合、以前の値。

消去

要求(0x13):

Expand
フィールド名サイズ

ヘッダー

variable

要求ヘッダー

応答(0x14):

Expand
フィールド名サイズ

ヘッダー

variable

応答ヘッダー

応答のステータス

1 バイト

0x00 = success(消去されている場合)

PutAll

すべてのキー値エントリーをキャッシュに同時に配置する一括操作。

要求(0x2D):

Expand
フィールド名サイズ

ヘッダー

variable

要求ヘッダー

有効期間

vInt

提供されたエントリーが存続できる秒数。秒数が 30 日を超える場合、この秒数は UNIX 時間として扱われるため、1/1/1970 からの秒数を表します。0 に設定すると、ライフスパンは無制限になります。

最大 ID

vInt

キャッシュからエビクトされる前に、各エントリーをアイドル状態でいられる秒数。0 の場合は、最大アイドル時間がありません。

エントリー数

vInt

挿入されるエントリーの数

キー 1 長

vInt

キーの長さ

キー 1

バイト配列

取得されるキー

値 1 の長さ

vInt

値の長さ

値 1

バイト配列

取得した値

キー 2 長

vInt

 

キー 2

バイト配列

 

値 2 の長さ

vInt

 

値 2

バイト配列

 

…​ エントリー数に達するまで継続する

  

応答(0x2E):

Expand
フィールド名サイズ

ヘッダー

variable

応答ヘッダー

応答のステータス

1 バイト

0x00 = success(すべてが配置されている場合)

GetAll

指定されたキーのセットにマップするすべてのエントリーを取得する一括操作。

要求(0x2F):

Expand
フィールド名サイズ

ヘッダー

variable

要求ヘッダー

キー数

vInt

エントリーを検索するキーの数

キー 1 長

vInt

キーの長さ

キー 1

バイト配列

取得されるキー

キー 2 長

vInt

 

キー 2

バイト配列

 

…​ キー数に達するまで継続される

  

応答(0x30):

Expand
フィールド名サイズ

ヘッダー

variable

応答ヘッダー

応答のステータス

1 バイト

 

エントリー数

vInt

返されるエントリーの数

キー 1 長

vInt

キーの長さ

キー 1

バイト配列

取得されるキー

値 1 の長さ

vInt

値の長さ

値 1

バイト配列

取得した値

キー 2 長

vInt

 

キー 2

バイト配列

 

値 2 の長さ

vInt

 

値 2

バイト配列

 

…​ エントリー数に達するまで継続する

 

0x00 = success。get returned sucessfully

Stats

利用可能なすべての統計の概要を返します。統計で返される各統計では、名前と値はどちらも String UTF-8 形式で返されます。サポートされる統計は以下のとおりです。

Expand
名前説明

timeSinceStart

Hotgitops の開始からの秒数。

currentNumberOfEntries

「Hoting servers」サーバーに現在含まれるエントリーの数。

totalNumberOfEntries

Hotgitops サーバーに保存されているエントリーの数。

stores

put 操作の数。

retrievals

get 操作の数。

Hits

ヒット数。

misses

get misses の数。

removeHits

削除ヒット数。

removeMisses

削除のミスの数。

要求(0x15):

Expand
フィールド名サイズ

ヘッダー

variable

要求ヘッダー

応答(0x16):

Expand
フィールド名サイズ

ヘッダー

variable

応答ヘッダー

応答のステータス

1 バイト

0x00 = success(統計が取得された場合)

統計数

vInt

返された個々の統計の数。

名前 1 の長さ

vInt

名前付き統計の長さ。

Name 1

string

統計名が含まれる文字列。

値 1 の長さ

vInt

value フィールドの長さ。

値 1

string

統計値が含まれる文字列。

名前 2 の長さ

vInt

 

名前 2

string

 

値 2 の長さ

vInt

 

値 2

文字列

 

…​etc

  

Ping

サーバーが利用可能かどうかを確認するためのアプリケーションレベルの要求。

要求(0x17):

Expand
フィールド名サイズ

ヘッダー

variable

要求ヘッダー

応答(0x18):

Expand
フィールド名サイズ

ヘッダー

variable

応答ヘッダー

応答のステータス

1 バイト

0x00 = success(エラーがない場合)

エラー処理

エラー応答(0x50)

Expand
フィールド名サイズ

ヘッダー

variable

応答ヘッダー

応答のステータス

1 バイト

0x8x = エラー応答コード

エラーメッセージの長さ

vInt

エラーメッセージの長さ

エラーメッセージ

string

エラーメッセージ0x84 の場合、このエラーフィールドには Hot336 サーバーでサポートされる最新バージョンが含まれます。長さは合計本文の長さで定義されます。

複数取得操作

マルチget操作は、1 つのキーを要求せずにキーのセットを要求する get 操作の形式です。Hotgitops プロトコルにはこのような操作は含まれませんが、remote HotTEMPLATES クライアントは、個別の get リクエストパッシングまたはパイプのいずれかを使用して、このタイプの操作を簡単に実装できます。もう 1 つの可能性として、リモートクライアントが非同期またはノンブロッキング取得リクエストを使用することができます。たとえば、クライアントが N キーが必要な場合は、N async get requests を送信し、すべての応答を待つことができます。最後に、マルチットは一括取得操作と混同しないようにしてください。一括取得では、すべてまたは多数のキーが取得されますが、クライアントはどのキーを取得するかを認識しませんが、マルチget では、クライアントはどのキーを取得するかを定義します。

20.6.1.7. 例: 要求の変更

  • コード化されたリクエスト
Expand
Byte01234567

8

0xA0

0x09

0x41

0x01

0x07

0x4D ('M')

0x79 ('y')

0x43 ('C')

16

0x61 ('a')

0x63 ('c')

0x68 ('h')

0x65 ('e')

0x00

0x03

0x00

0x00

24

0x00

0x05

0x48 ('H')

0x65 ('e')

0x6C ('l')

0x6C ('l')

0x6F ('o')

0x00

32

0x00

0x05

0x57 ('W')

0x6F ('o')

0x72 ('r')

0x6C ('l')

0x64 ('d')

 

  • フィールドの説明
Expand
フィールド名フィールド名

マジック(0)

0xA0

Message Id(1)

0x09

バージョン(2)

0x41

opcode(3)

0x01

キャッシュ名の長さ(4)

0x07

Cache name(5-11)

'MyCache'

フラグ(12)

0x00

クライアントの Intelligence(13)

0x03

トポロジー ID(14)

0x00

トランザクションタイプ(15)

0x00

トランザクション ID(16)

0x00

キーフィールド長(17)

0x05

キー(18 - 22)

'hello'

lifespan(23)

0x00

最大アイドル時間(24)

0x00

値フィールドの長さ(25)

0x05

値(26-30)

'World'

  
  • コード化された応答
Expand
Byte01234567

8

0xA1

0x09

0x01

0x00

0x00

 

 

 

  • フィールドのプランニング
Expand
フィールド名フィールド名

マジック(0)

0xA1

Message Id(1)

0x09

opcode(2)

0x01

ステータス(3)

0x00

トポロジー変更マーカー(4)

0x00

 

 
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2026 Red Hat
トップに戻る