type
status
date
slug
summary
tags
category
icon
password
理論
スロットリング(Throttling)とは
システムやサービスが一定の制限を超えてリクエストを受け付けないようにする処理のことです。これは、リソースの消費が過度にならないように制御するために行われます。
例えば、Amazon Kinesis Data Streamsでは、各シャードに対して一定のスループット制限(1秒あたり最大1MBのデータまたは最大1000件のPUTリクエスト)が設けられています。この制限を超えるリクエストが行われると、システムはスロットリングを発生させ、リクエストが拒否されます。具体的には、"ReadProvisionedThroughputExceeded" というエラーが発生し、データの読み取りや書き込みが遅くなったり、失敗することがあります。
スロットリングは、システムが過負荷に陥るのを防ぐために、リソース使用を制限する方法としてよく使用されます。
シャード(Shard)とは、
データストリームを分割して処理する単位です。例えば、Amazon Kinesis Data Streamsでは、データがシャードという単位で分割され、各シャードがデータの読み書きや処理を担当します。
シャードには以下の特徴があります:
- 各シャードにはスループット制限(1秒あたり最大1MBのデータや1000件のリクエスト)が設定されています。
- シャードの数を増やすことで、より多くのデータを処理できるようになります。
データを効率よく処理するために、システムに適切な数のシャードを配置することが重要です。
強化されたファンアウト(Enhanced Fan-Out)機能は、Amazon Kinesisの特徴で、複数の消費者がKinesisストリームから同時にデータを効率よく取得できる仕組みです。
通常、Kinesisのデータストリームは、1つの消費者がシャードからデータを取り出すと、他の消費者はそのデータを共有できません。しかし、強化されたファンアウトを使用すると、各消費者が独立して、シャードからデータをリアルタイムで取得でき、他の消費者と競合しないため、スループットが向上します。
主な特徴:
- 高スループット:複数の消費者が同時にデータを取り出せる。
- 独立したデータ取得:消費者間でデータの競合がない。
- 低レイテンシ:リアルタイムでデータを取得できる。
簡単に言うと、強化されたファンアウトは、複数の消費者が同時にストリームからデータを効率的に取得できるようにする機能です。

Kinesisでは、データはシャードごとに分割され、消費者(コンシューマ)は各シャードからデータを読み取って処理します。シャード間のデータのマージ(統合)は、通常、消費者側で行われますが、シャード自体の合併(リシャーディング)はKinesisが自動的に管理します。

簡単に言うと、消費者はデータをシャードごとに処理し、必要に応じてデータを統合してバックエンドに渡す役割を担います。
Kinesis Data Streamsと強化されたファンアウト機能の本質的知識
1. Kinesis Data Streamsの基本
- Kinesis Data Streamsは、大量のデータをリアルタイムで処理するためのAWSサービスです。データはシャードという単位で分割され、消費者(コンシューマ)はシャードごとにデータを読み取ります。
2. シャードとデータの流れ
- 各シャードには固有のデータが格納されており、消費者はシャードIDを指定してデータを取得します。
- 通常、複数の消費者が同じシャードからデータを読み取ることができません。このため、複数の消費者が同時にデータを取得する際、競合やスロットリング(制限)問題が発生することがあります。
- 具体的には、強化されたファンアウトを使うと、Kinesisストリーム内のデータが複数の消費者に対して独立してコピーされ、各消費者がデータを同時に読み取ることができるようになります。これにより、各消費者は他の消費者と競合せずにリアルタイムでデータを取得できます。
3. 強化されたファンアウト(Enhanced Fan-Out)
- 強化されたファンアウト機能は、複数の消費者が同時に同じシャードから独立してデータを取得できる仕組みです。これにより、消費者間でのデータ競合を防ぎ、スループットを向上させます。
- 強化されたファンアウトを利用すると、各消費者は専用のスループットを持ち、他の消費者がデータを取得しても影響を受けません。
4. 適用シナリオ
- 強化されたファンアウトは、データをリアルタイムで処理する必要がある場合や、複数のアプリケーションが同じデータを消費する場合に特に有効です。
- 例えば、交通データやIoTデバイスのデータを複数のアプリケーションで同時に処理したい場合に、強化されたファンアウトを活用できます。
5. 利点
- 効率的なデータ取得: 消費者は独立してデータを取得できるため、データの競合がなくなり、スループットが向上します。
- 低レイテンシ: 各消費者がリアルタイムでデータを取得でき、アプリケーションの応答性が向上します。
結論:
Kinesisの強化されたファンアウト機能は、複数の消費者がリアルタイムで同時にデータを効率的に取得できるようにする重要な機能であり、大規模なデータストリーミング処理において、スループットやレイテンシを大きく改善します。
実践
略
一問道場
質問 #220
トピック 1
ある企業では、IoTセンサーが大都市全体の交通パターンを監視しています。企業は、センサーからデータを読み取り、収集し、データの集計を行いたいと考えています。
ソリューションアーキテクトは、IoTデバイスがAmazon Kinesis Data Streamsにストリームを送信し、複数のアプリケーションがそのストリームから読み取るソリューションを設計しました。しかし、いくつかの消費者がスロットリングを経験しており、定期的に「ReadProvisionedThroughputExceeded」エラーが発生しています。
この問題を解決するためにソリューションアーキテクトはどのようなアクションを取るべきですか?(3つ選んでください)
- A. ストリームのシャード数を増加させるために、ストリームをリシャードする。
- B. Kinesis Producer Library (KPL) を使用し、ポーリング頻度を調整する。
- C. 強化されたファンアウト機能を使用した消費者を利用する。
- D. ストリームのシャード数を減少させるために、ストリームをリシャードする。
- E. 消費者のロジックでエラーのリトライと指数バックオフメカニズムを使用する。
- F. ストリームを動的パーティショニングで構成する。
解説
シナリオ
複数のアプリケーションがKinesis Data Streamsからデータを読み取っていますが、一部の消費者がReadProvisionedThroughputExceededエラー(スロットリングエラー)に遭遇しています。これは、読み取りスループットが制限されていることが原因です。
解決方法(選択肢)
- A. シャードの再分割
- シャードを再分割して、より多くのシャードを作成することで、スループットを向上させます。これにより、データの読み取りを並列化できます。
- B. Kinesis Producer Library (KPL)を使用し、ポーリング頻度を調整
- KPLはデータを効率的に送信するためのライブラリで、ポーリング頻度の調整も一つのアプローチですが、スロットリングの直接的な解決策にはなりません。
- C. 強化されたファンアウト機能を使う
- 強化されたファンアウトを利用することで、各消費者が独立して専用のスループット帯域を持つようになり、データを競合せずに効率的に取得できます。これにより、スロットリングの問題を解決できます。
- D. シャード数の減少
- シャード数を減らすと逆にスループットが低下するため、スロットリングの問題は悪化します。
- E. 消費者のロジックにエラートライと指数バックオフを導入
- エラートライと指数バックオフ(一定の遅延を挟んで再試行する方法)は、スロットリングエラーを緩和するための適切な方法です。
最適解:
A、C、Eが最も効果的な対策です。
- A: シャードを増やすことで並列処理を強化
- C: 強化されたファンアウトでスループット向上
- E: エラートライ&バックオフを使って再試行を適切に管理
- 作者:みなみ
- 链接:https://tangly1024.com/資格勉強/172d7ae8-88e2-801c-8759-c9c99c469e2f
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章