Amazon Kinesis Producer Library を使用してプロデューサーを開発する (KPL) - Amazon Kinesis Data Streams

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

Amazon Kinesis Producer Library を使用してプロデューサーを開発する (KPL)

Amazon Kinesis Data Streams プロデューサーは、ユーザーデータレコードを Kinesis data stream に配置する (データの取り込みとも呼ばれます) アプリケーションです。Kinesis Producer Library (KPL) は、プロデューサーアプリケーションの開発を簡素化し、デベロッパーが Kinesis データストリームへの高い書き込みスループットを実現できるようにします。

Amazon KPLで をモニタリングできます CloudWatch。詳細については、「Amazon で Kinesis プロデューサーライブラリをモニタリングする CloudWatch」を参照してください。

注記

KPL 最新バージョンにアップグレードすることをお勧めします。KPL は、最新の依存関係とセキュリティパッチ、バグ修正、および下位互換性のある新機能を含む新しいリリースで定期的に更新されます。詳細については、https://github.com/awslabs/amazon-kinesis-producer「/releases/」を参照してください。

のロールを確認する KPL

KPL は easy-to-use、Kinesis データストリームへの書き込みに役立つ、高度に設定可能な ライブラリです。これは、プロデューサーアプリケーションコードと Kinesis Data Streams APIアクションの間の仲介として機能します。は、次の主要なタスクKPLを実行します。

  • 自動的で設定可能な再試行メカニズムにより 1 つ以上の Kinesis Data Streams へ書き込む

  • レコードを収集し、PutRecords を使用して、リクエストごとに複数シャードへ複数レコードを書き込む

  • ユーザーレコードを集約し、ペイロードサイズを増加させ、スループットを改善する

  • Kinesis Client Library (KCL) とシームレスに統合して、コンシューマーのバッチレコードの集計を解除します

  • プロデューサーのパフォーマンスを可視化するために、ユーザーに代わって Amazon CloudWatch メトリクスを送信します

KPL は、 でAPI利用可能な Kinesis Data Streams とは異なることに注意してくださいAWS SDKs。Kinesis Data Streams APIは、Kinesis Data Streams の多くの側面 (ストリームの作成、リシャーディング、レコードの配置と取得など) を管理するのに役立ちます。一方、 KPLは、データの取り込み専用の抽象化レイヤーを提供します。Kinesis Data Streams の詳細についてはAPI、Amazon KinesisAPIリファレンス」を参照してください。

を使用する利点を理解する KPL

次のリストは、Kinesis Data Streams プロデューサーの開発KPLに を使用することの主な利点の一部を示しています。

KPL は、同期または非同期のユースケースで使用できます。同期動作を使用する特別な理由がないかぎり、非同期インターフェイスの優れたパフォーマンスを使用することを推奨します。これら 2 つのユースケースの詳細とコード例については、を使用して Kinesis データストリームに書き込む KPLを参照してください。

パフォーマンスのメリット

KPL は、高性能プロデューサーの構築に役立ちます。Amazon EC2インスタンスが数百または数千の低電力デバイスから 100 バイトのイベントを収集し、Kinesis データストリームにレコードを書き込むためのプロキシとして機能する状況を考えてみましょう。これらのEC2インスタンスはそれぞれ、1 秒あたり数千のイベントをデータストリームに書き込む必要があります。必要なスループットを実現するには、お客様の側で、再試行ロジックとレコード集約解除に加え、バッチ処理やマルチスレッドなどの複雑なロジックをプロデューサーに実装する必要があります。KPL は、これらのタスクをすべて実行します。

コンシューマー側の使いやすさ

Java KCLで を使用するコンシューマー側のデベロッパーの場合、 は追加の労力なしでKPL統合されます。は、複数のKPLユーザーレコードで構成される集約された Kinesis Data Streams レコードKCLを取得すると、 を自動的に呼び出しKPLて個々のユーザーレコードを抽出してから、ユーザーに返します。

を使用せずに APIオペレーションGetRecordsを直接KCL使用するコンシューマー側のデベロッパーの場合、Java KPL ライブラリを使用して個々のユーザーレコードを抽出してからユーザーに返すことができます。

プロデューサーのモニタリング

Amazon と を使用して、Kinesis Data Streams プロデューサーを収集、モニタリング CloudWatch 、分析できますKPL。は、 CloudWatch ユーザーに代わってスループット、エラー、およびその他のメトリクスを にKPL出力し、ストリーム、シャード、またはプロデューサーレベルでモニタリングするように設定できます。

非同期アーキテクチャ

KPL は Kinesis Data Streams に送信する前にレコードをバッファリングする可能性があるため、実行を続行する前に、呼び出し元アプリケーションがレコードがサーバーに到着したことの確認をブロックして待機するように強制することはありません。レコードを に入れる呼び出しは、KPL常にすぐに戻り、レコードの送信やサーバーからのレスポンスの受信を待つことはありません。代わりに、レコードを Kinesis Data Streams に送信した結果を後で受信するための Future オブジェクトが作成されます。これは、 の非同期クライアントと同じ動作です AWS SDK。

を使用しないタイミングを理解する KPL

では、 ライブラリRecordMaxBufferedTime内で最大 の処理遅延が発生するKPL可能性があります (ユーザー設定可能)。RecordMaxBufferedTime の値が大きいほど、パッキング効率とパフォーマンスが向上します。この追加の遅延を許容できないアプリケーションは、 AWS SDKを直接使用する必要がある場合があります。Kinesis Data Streams で を使用する AWS SDK方法の詳細については、「」を参照してくださいAPI で Amazon Kinesis Data Streams を使用してプロデューサーを開発する AWS SDK for JavaRecordMaxBufferedTime および のその他のユーザー設定可能なプロパティの詳細についてはKPL、「」を参照してくださいKinesis プロデューサーライブラリを設定する