ある企業はAmazon Kinesis Data Streamsを使用してストリーミングデータを処理しています。現在、3つの異なるコンシューマーアプリケーションが同じストリームからデータを読み取っていますが、コンシューマーの追加に伴い、ReadProvisionedThroughputExceededエラーが発生し始めました。各コンシューマーはレコードの処理遅延を最小限に抑える必要があります。ストリームのシャード数を増やすことなく、この問題を解決する最も費用対効果の高い方法は何ですか。
Amazon Kinesis Data Streamsの拡張ファンアウト(Enhanced Fan-Out: EFO)機能を使用すると、各コンシューマーはシャードあたり最大2MB/秒の専用読み取りスループットを獲得できます。通常の読み取りではストリーム全体のシャードごとに2MB/秒の共有クォータとなるため、複数コンシューマーがポーリングするとスロットリングが発生しやすくなります。EFOを有効にすることで遅延も約70ミリ秒に短縮されます。KCLのバージョンアップやポーリング頻度の増加は共有クォータの制限を回避できません。Amazon Data Firehoseはバッチ配信向けでありリアルタイム処理に不向きです。データ保持期間の延長はスループット制限の解決には全く無関係です。