Amazon SQS の FIFO キューの高スループット - Amazon Simple Queue Service

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

Amazon SQS の FIFO キューの高スループット

Amazon SQS高スループットFIFOキューは、厳密なメッセージ順序を維持しながら高メッセージスループットを効率的に管理し、多数のメッセージを処理するアプリケーションの信頼性とスケーラビリティを確保します。このソリューションは、高スループットと順序付けられたメッセージ配信の両方を必要とするシナリオに最適です。

Amazon SQS 高スループット FIFO キューは、厳密なメッセージの順序付けが重要ではなく、受信メッセージの量が比較的少ない、または散発的なシナリオでは必要ありません。例えば、低頻度または非連続のメッセージを処理する小規模なアプリケーションがある場合、高スループットの FIFO キューに関連する複雑さとコストの増加は正当化されない可能性があります。さらに、アプリケーションで高スループット FIFO キューが提供する拡張スループット機能が必要ない場合は、標準の Amazon SQS キューを選択することで、コスト効率が高く、管理が簡単になる可能性があります。

高スループットの FIFO キューでリクエストキャパシティーを強化するには、メッセージグループの数を増やすことをお勧めします。高スループットのメッセージクォータの詳細については、「Amazon Web Services 全般のリファレンス」の「Amazon SQS Service Quotas」を参照してください。

キューごとのクォータとデータ分散戦略については、Amazon SQS メッセージクォータ「」および「」を参照してくださいSQS FIFOキューの高スループットを実現するパーティションとデータ分散

Amazon SQS FIFO キューの高スループットのユースケース

次のユースケースでは、高スループット FIFO キューのさまざまなアプリケーションに焦点を当て、業界やシナリオ全体での有効性を示します。

  1. リアルタイムデータ処理: イベント処理やテレメトリデータインジェストなど、リアルタイムデータストリームを処理するアプリケーションは、スループットの高い FIFO キューを利用して、メッセージの継続的な流入を処理しながら、正確な分析のために順序を維持することができます。

  2. e コマース注文処理: 顧客取引の順序を維持することが重要な e コマースプラットフォームでは、高スループットの FIFO キューにより、ショッピングのピーク時でも注文が遅延なく順番に処理されます。

  3. 金融サービス: 高頻度の取引データまたはトランザクションデータを処理する金融機関は、高スループットの FIFO キューに依存して、メッセージの順序付けに関する厳格な規制要件に準拠しながら、レイテンシーを最小限に抑えながら市場データとトランザクションを処理します。

  4. メディアストリーミング: ストリーミングプラットフォームとメディアディストリビューションサービスは、高スループットの FIFO キューを使用してメディアファイルとストリーミングコンテンツの配信を管理します。これにより、コンテンツ配信の正しい順序を維持しながら、ユーザーのスムーズな再生エクスペリエンスを確保できます。

SQS FIFOキューの高スループットを実現するパーティションとデータ分散

Amazon SQSは、FIFOキューデータをパーティションに保存します。パーティションは、 AWS リージョン内の複数のアベイラビリティーゾーンに自動的にレプリケートされるキューのストレージの割り当てです。パーティションは管理しません。代わりに Amazon SQSがパーティション管理を処理します。

FIFOキューの場合、Amazon SQSは次の状況でキューのパーティションの数を変更します。

  • 現在のリクエストレートが既存のパーティションがサポートできる値に近づいたり超えたりすると、キューがリージョナルクォータに達するまで追加のパーティションが割り当てられます。クオータの詳細については、{Amazon SQS メッセージクォータ}を参照してください。

  • 現在のパーティションの使用率が低い場合は、パーティションの数が減ることがあります。

パーティション管理は自動的にバックグラウンドで自動的に発生し、アプリケーションに対して透過的です。キューとメッセージは常に利用可能です。

メッセージグループ ID によるデータの配布

FIFOキューにメッセージを追加するには、Amazon SQSは各メッセージのメッセージグループ ID の値を内部ハッシュ関数への入力として使用します。ハッシュ関数からの出力値によって、どのパーティションにメッセージが保存されるが決まります。

次の図は、複数のパーティションにまたがるキューを示しています。キューのメッセージグループ IDは、アイテム番号に基づきます。Amazon SQSは、ハッシュ関数を使用して、新しい項目の保存場所を決定します。この場合は、文字列のハッシュ値に基づいていますitem0。アイテムは、キューに追加される順序と同じ順序で格納されることに注意してください。各アイテムの場所は、メッセージグループIDのハッシュ値によって決まります。

キューは複数のパーティションにまたがっています。
注記

Amazon SQS は、パーティションの数に関係なく、FIFO キューのパーティション間で項目を均一に分散 AWS するように最適化されています。多数の異なる値を持つことができるメッセージグループ IDs を使用することをお勧めします。

パーティション使用率の最適化

サポートされているリージョンにおいては、各パーティションは、バッチ処理により 1 秒あたり最大 3,000 件のメッセージ、または送信、受信、削除操作では 1 秒あたり最大 300 件のメッセージをサポートします。高スループットのメッセージクォータの詳細については、「Amazon Web Services 全般のリファレンス」の「Amazon SQS Service Quotas」を参照してください。

バッチAPI を使用する場合、各メッセージはメッセージグループ ID によるデータの配布で説明されているプロセスに基づいてルーティングされます。同じパーティションにルーティングされたメッセージは、単一のトランザクションでグループ化され、処理されます。

SendMessageBatch API のパーティション使用率を最適化するために、 AWS では、可能な場合は同じメッセージグループ IDs でメッセージをバッチ処理することをお勧めします。

DeleteMessageBatch および ChangeMessageVisibilityBatch APIs、 AWS は MaxNumberOfMessagesパラメータを 10 に設定してReceiveMessageリクエストを使用し、1 つのReceiveMessageリクエストによって返される受信ハンドルをバッチ処理することをお勧めします。

次の例では、さまざまなメッセージグループ IDを持つメッセージのバッチが送信されます。バッチは3つのグループに分割され、それぞれがパーティションのクォータに対してカウントされます。

異なるメッセージグループ IDを持つメッセージのバッチは、パーティションに保存されます。
注記

Amazon SQS では、同じメッセージグループ ID の内部ハッシュ関数を持つメッセージがバッチリクエスト内でグループ化されている場合にのみ保証されます。内部ハッシュ関数の出力とパーティションの数に応じて、異なるメッセージグループ IDを持つメッセージがグループ化されることがあります。ハッシュ関数またはパーティションの数はいつでも変更できるため、ある時点でグループ化されたメッセージは後でグループ化されない場合があります。