Amazon Kinesis Producer Library を使用したプロデューサーの開発 - Amazon Kinesis Data Streams

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

Amazon Kinesis Producer Library を使用したプロデューサーの開発

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

Amazon で KPL をモニタリングできます CloudWatch。詳細については、「Amazon CloudWatch を使用した Kinesis Client Library のモニタリング」を参照してください。

注記

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 は AWS SDK で使用できる Kinesis Data Streams API とは異なることに注意してください。Kinesis Data Streams API では Kinesis Data Streams の多くの機能 (ストリームの作成、リシャーディング、レコードの入力と取得など) を管理できます。KPL はデータの取り込みに特化した抽象化レイヤーを提供します。Kinesis Data Streams API の詳細については、Amazon Kinesis API リファレンスを参照してください。

KPL を使用するメリット

Kinesis Data Streams プロデューサーの開発に KPL を使用する主な利点を以下に示します。

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

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

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

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

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

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

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

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

非同期アーキテクチャ

KPL は、レコードを Kinesis Data Streams に送信する前にそれらのレコードをバッファ処理する場合があるため、実行を続行する前にレコードがサーバーに到着したことを確認するために、発信者アプリケーションを強制的にブロックし待機させることはしません。レコードを KPL に配置する呼び出しは、必ずすぐに処理が戻り、レコードの送信やサーバーからの応答の受信を待ちません。代わりに、レコードを Kinesis Data Streams に送信した結果を後で受信するための Future オブジェクトが作成されます。これは AWS SDK の非同期クライアントと同じ動作です。

KPL の使用が適さない場合

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