Amazon Kinesis プロデューサーライブラリを使用したプロデューサーの開発 - Amazon Kinesis Data Streams

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

Amazon Kinesis プロデューサーライブラリを使用したプロデューサーの開発

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

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

注記

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

KPL の役割

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

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

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

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

  • とシームレスに統合Kinesis クライアントライブラリコンシューマーで (KCL) のバッチ処理されたレコードを集約解除するには

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

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

KPL を使用するメリット

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

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

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

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

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

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

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

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

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

非同期アーキテクチャ

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

での KPL の使用が適さない場合

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