メニュー
Amazon Kinesis Data Streams
開発者ガイド

Kinesis Client Library を使用した Amazon Kinesis Data Streams コンシューマーの開発

Kinesis Client Library(KCL)を使用して、Amazon Kinesis Data Streams のコンシューマーアプリケーションを開発できます。Kinesis Data Streams API を使用して Kinesis data stream からデータを取得することはできますが、KCL で提供するコンシューマーアプリケーションの設計パターンとコードを使用することをお勧めします。

Amazon CloudWatch を使用して KCL をモニタリングできます。詳細については、「Amazon CloudWatch による Kinesis クライアントライブラリのモニタリング」を参照してください。

Kinesis Client Library

Kinesis Client Library (KCL) は、Kinesis data stream からデータを取得して処理するのに役立ちます。このタイプのアプリケーションは、コンシューマーとも呼ばれます。KCL は、分散コンピューティングに関連する多くの複雑なタスクを処理します。たとえば、複数のインスタンス間での負荷分散、インスタンスの障害に対する応答、処理済みのレコードのチェックポイント作成、リシャーディングへの対応が挙げられます。KCL によって、レコード処理のロジックの記述に集中することができます。

KCL は AWS SDK で使用できる Kinesis Data Streams API とは異なることに注意してください。Kinesis Data Streams API は Kinesis Data Streams の多くの要素(ストリームの作成、リシャーディング、レコードの入力と取得など)を管理するのに役立ちます。一方、KCLはコンシューマーロールでデータの処理に特化した抽象化層を提供します。Kinesis Data Streams API の詳細については、Amazon Kinesis API Reference を参照してください。

KCL は Java ライブラリです。Java 以外の言語のサポートは、MultiLangDaemon という多言語インターフェイスを使用して提供されます。このデーモンは Java ベースで、Java 以外の KCL 言語を使用するときに実行されます。 たとえば、KCL for Python をインストールして、コンシューマーアプリケーションをすべて Python で書く場合でも、MultiLangDaemon を使用するために、Java をシステムにインストールする必要があります。さらに、MultiLangDaemon には、接続先の AWS リージョンなどの、ユースケースに合わせてカスタマイズする必要のあるデフォルト設定例があります。MultiLangDaemon の詳細については、GitHub で「KCL MultiLangDaemon project」のページにアクセスしてください。

KCL アプリケーションは、実行時に設定情報を使用してワーカーをインスタンス化してから、レコードプロセッサを使用して Kinesis data stream から取得したデータを処理します。KCLアプリケーションは任意の数のインスタンスで実行できます。同じアプリケーションの複数のインスタンスが、障害発生時に連係し、動的な負荷分散を行います。スループットの制限を条件として、複数の KCLアプリケーションで同じストリームを処理することもできます。

KCL のロール

KCL は、レコード処理のロジックと Kinesis Data Streams の仲介として機能します。

KCLアプリケーションは起動時に KCLを呼び出してワーカーをインスタンス化します。この呼び出しは、アプリケーションの設定情報(ストリーム名や AWS の認証情報など)を KCL に提供します。

KCL は、次のタスクを実行します。

  • ストリームに接続する

  • シャードを列挙する

  • シャードと他のワーカー(存在する場合)の関連付けを調整する

  • レコードプロセッサで管理する各シャードのレコードプロセッサをインスタンス化する

  • ストリームからデータレコードを取得する

  • 対応するレコードプロセッサにレコードを送信する

  • 処理されたレコードのチェックポイントを作成する

  • ワーカーのインスタンス数が変化したときに、シャードとワーカーの関連付けを調整する

  • シャードが分割またはマージされたときに、シャードとワーカーの関連付けを調整する

このページの内容: