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

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

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

FIFO キューの高スループットAmazon SQS FIFO キューの開始方法により、1秒につきAPI に対してより多数のリクエスト数をサポートします。FIFO キューの高スループットでリクエスト数を増やすには、使用するメッセージグループの数を増やします。高スループットのメッセージクォータの詳細については、「Amazon Web Services 全般のリファレンス」の「Amazon SQS Service Quotas」を参照してください。FIFO クォータの高スループットがキュー単位のクォータについては、メッセージに関連するクォータおよびSQS FIFOキューの高スループットを実現するパーティションとデータ分散を参照してください。

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

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

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

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

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

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

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

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

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

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

Amazon SQSは、パーティション数に関係なく、 FIFOキューのパーティション全体に渡ってアイテムを均一に分散している状態に対して最適化されています。AWSでは、多数の個別の値を持つことができるメッセージグループ IDの使用をお勧めします。

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

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

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

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

DeleteMessageBatchChangeMessageVisibilityBatch API のパーティション使用率を最適化するため、AWS では、MaxNumberOfMessages パラメータを 10 に設定した ReceiveMessage リクエストを使用し、1 回の ReceiveMessage リクエストで返される受信ハンドルをバッチ処理することをお勧めします。

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

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

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

FIFO キューの高スループットを有効化する

新規または既存の FIFO キューに対して高スループットを有効にできます。この機能には、FIFO キューを作成および編集するときに、次の 3つの新しいオプションが追加されます。

  • 高スループット FIFO を有効にする—現在の FIFOキューのメッセージに対し、より高いスループットを有効にします。

  • 重複除外スコープ-重複除外をキューレベルまたはメッセージグループレベルのどちらで実行するかを指定します。

  • FIFO スループット制限—FIFO キューのメッセージのスループットクォータをキューまたはメッセージグループレベルのどちらで設定するかを指定します。

FIFO キュー(コンソール)の高スループットを有効にするには
  1. 作成を起動またはFIFO キューを編集

  2. キューのオプションを指定するときは、高スループット FIFO を有効にする

    FIFOキューの高スループットを有効にすると、関連するオプションは次のように設定されます。

    • 重複除外スコープは、FIFOキューの高スループットを使用するために必要な設定のメッセージグループ に設定されます。

    • FIFO スループット制限は、FIFO キューの高スループットを使用するために必要な設定のメッセージグループ ID単位 に設定されます。

    FIFO キューの高スループットを使用するために必要な設定のいずれかを変更すると、通常のスループットがキューに対して有効になり、指定どおりに重複除外が実行されます。

  3. キューのすべてのオプションをの指定を継続 終了したら、キューの作成または保存を選択します。

FIFOキューを作成または編集した後、メッセージの送信およびメッセージの受信と削除、全てをより高いTPSで行うことができます。高スループットクォータについては、「メッセージに関連するクォータ」の「メッセージスループット」を参照してください。