SQS FIFO キューの高スループットにおけるパーティションおよびデータ分散 - Amazon Simple Queue Service

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

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 件のメッセージをサポートします。

バッチ API を使用する際、各メッセージは「メッセージグループ ID ごとにデータ配布 」で説明しプロセスに基づいてルーティングされます。同じパーティションにルーティングされるメッセージは、1 つのトランザクションでグループ化および処理されます。

のパーティション使用率を最適化するにはSendMessageBatchアピ、AWSは可能な限り、同じメッセージグループ ID を持つメッセージのバッチ処理をお勧めします。

のパーティション使用率を最適化するにはDeleteMessageBatchそしてChangeMessageVisibilityBatchAPI、AWS推奨事項を使用するReceiveMessageとのリクエストMaxNumberOfMessagesパラメータを 10 に設定し、単一によって返されたレシートハンドルをバッチ処理するReceiveMessageリクエスト.

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


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

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