KPL の主要な概念 - Amazon Kinesis Data Streams

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

KPL の主要な概念

以下のセクションでは、Kinesis Producer Library (KPL) を理解し、そのメリットを引き出すために必要な概念と用語について説明します。

Records

このガイドでは、KPL ユーザーレコードおよびKinesis Data Streams。用語を使用する場合record修飾語を付けずにいれば、KPL ユーザーレコード。Kinesis Data Streams レコードを意味するときは、明示的にKinesis Data Streams

KPL ユーザーレコードは、ユーザーにとって特定の意味のあるデータの BLOB です。たとえば、ウェブサイトの UI イベントまたはウェブサーバーのログエントリを表す JSON BLOB がそれに該当します。

Kinesis Data Streams レコードは、RecordKinesis Data Streams サービス API で定義されたデータ構造です。これには、パーティションキー、シーケンス番号、データの BLOB が含まれています。

Batching

バッチ処理は、各項目に対して単一のアクションを繰り返し実行する代わりに、複数の項目に対してそのアクションを実行することを意味します。

ここでは、「項目」はレコードに対応し、「アクション」はレコードを Kinesis Data Streams に送信することに対応します。バッチ処理を使用しない場合、各レコードを別々の Kinesis Data Streams レコードに配置し、それぞれを Kinesis データストリームに送信するたびに HTTP リクエストを実行します。バッチ処理では、各 HTTP リクエストにより、1 つではなく複数のレコードを処理できます。

KPL では、2 種類のバッチ処理がサポートされます。

  • 集約— 単一の Kinesis Data Streams レコードに複数のレコードを格納します。

  • Collection— API オペレーションの使用PutRecordsをクリックして、複数の Kinesis Data Streams レコードを Kinesis Data Streams レコードに送信します。

2 種類の KPL バッチ処理は、共存できるように設計されており、互いに独立して有効または無効にできます。デフォルトでは、どちらも有効です。

Aggregation

集約は、Kinesis Data Streams レコードに複数のレコードを保存することを意味します。集約を使用すると、API 呼び出しごとに送信されるレコード数を増やすことができ、効率的にプロデューサーのスループットを高めることができます。

Kinesis Data Streams シャードは、1 秒あたり最大で 1,000 レコードまたは 1 MB のスループットをサポートします。Kinesis Data Streams レコード/秒の制限により、お客様が 1 KB 未満に制限されます。レコードの集約を使用すると、複数のレコードを 1 つの Kinesis Data Streams レコードに結合できます。そのため、お客様はシャードあたりのスループットを改善することができます。

リージョンが us-east-1 の 1 つのシャードで、1 つが 512 バイトのレコードを 1 秒あたり 1,000 レコードの一定割合で処理する場合を考えます。KPL の集約を使用すると、1,000 レコードを 10 Kinesis Data Streams レコードに詰めることができ、RPS を 10 に減らすことができます (それぞれ 50 KB)。

Collection

Collectionは、複数の Kinesis Data Streams レコードをバッチ処理し、API オペレーションを呼び出して単一の HTTP リクエストでそれらを送信することを意味します。PutRecordsを使用して、各 Kinesis Data Streams レコードを独自の HTTP リクエストで送信する代わりに、

これにより、個別の HTTP リクエストを多数実行するオーバーヘッドが減るため、収集を使用しない場合に比べスループットが向上します。実際、PutRecords 自体が、この目的のために設計されています。

収集は、Kinesis Data Streams レコードのグループを使用している点で集約と異なります。収集された Kinesis Data Streams レコードには、ユーザーの複数のレコードをさらに含めることができます。この関係は、次のように図示できます。

record 0 --| record 1 | [ Aggregation ] ... |--> Amazon Kinesis record 0 --| ... | | record A --| | | ... ... | | record K --| | record L | | [ Collection ] ... |--> Amazon Kinesis record C --|--> PutRecords Request ... | | record S --| | | ... ... | | record AA--| | record BB | | ... |--> Amazon Kinesis record M --| ... | record ZZ--|