Amazon Kinesis Data Streams
開発者ガイド

Amazon Kinesis Data Streams Application の状態の追跡

Amazon Kinesis Data Streams application ごとに、KCL は固有の Amazon DynamoDB テーブルを使用してアプリケーションの状態を追跡します。KCL では、Amazon Kinesis Data Streams application 名からテーブル名を作成するため、各アプリケーション名は一意である必要があります。

アプリケーションの実行中に、Amazon DynamoDB コンソールを使用してテーブルを表示できます。

アプリケーションの起動時に Amazon Kinesis Data Streams application の Amazon DynamoDB テーブルが存在しない場合は、いずれかのワーカーがテーブルを作成し、describeStream メソッドを呼び出してテーブルの値を設定します。詳細については、「アプリケーション状態データ」を参照してください。

重要

アカウントには、Kinesis Data Streams 自体に関連するコストに加えて、DynamoDB テーブルに関連するコストが発生します。

スループット

Amazon Kinesis Data Streams application でプロビジョニングされたスループットの例外が発生した場合は、DynamoDB テーブルのプロビジョニングされたスループットを増やす必要があります。KCL がテーブルを作成するときにプロビジョニングされるスループットは、1 秒あたりの読み込み 10 回、1 秒あたりの書き込み 10 回ですが、これがユーザーのアプリケーションで十分でない場合があります。たとえば、Amazon Kinesis Data Streams applicationが頻繁にチェックポイントを作成する場合や、多くのシャードで構成されるストリームを処理する場合は、より多くのスループットが必要になる可能性があります。

DynamoDB のプロビジョニングされたスループットの詳細については、Amazon DynamoDB 開発者ガイドAmazon DynamoDB でのプロビジョニングされたスループットテーブルの操作に関する説明を参照してください。

アプリケーション状態データ

DynamoDB テーブルの各行は、アプリケーションによって処理中のシャードを表します。テーブルのハッシュキーは leaseKey であり、これはシャード ID です。

シャード ID に加えて、各行には次のデータが含まれます。

  • checkpoint: シャードの最新チェックポイントのシーケンス番号。この値はストリームのすべてのシャードで一意です。

  • checkpointSubSequenceNumber: Kinesis プロデューサーライブラリの集約機能を使用する場合、これは Kinesis レコード内の個別のユーザーレコードを追跡する checkpoint の拡張となります。

  • leaseCounter: ワーカーのリースが他のワーカーに保持されていることをワーカーが検出できるように、リースのバージョニングに使用されます。

  • leaseKey: リースの固有識別子。各リースはストリームのシャードに固有のもので、一度に 1 つのワーカーで保持されます。

  • leaseOwner: このリースを保持しているワーカー。

  • ownerSwitchesSinceCheckpoint: 最後にチェックポイントが書き込まれてから、このリースのワーカーが何回変更されたかを示します。

  • parentShardId: 子シャードの処理を開始する前に、親シャードが完全に処理済みであることを確認するために使用します。これにより、レコードがストリームに入力されたのと同じ順序で処理されるようになります。