Amazon SQS 公平キュー - Amazon Simple Queue Service

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

Amazon SQS 公平キュー

Amazon SQS 公平キューは、顧客、クライアントアプリケーション、メッセージタイプなど、複数の論理エンティティからのメッセージを含むマルチテナントキューのノイズの多い近隣の影響を自動的に軽減します。これらの共有キュー環境では、重要なパフォーマンスメトリクスの 1 つはドウェル時間です。ドウェル時間は、メッセージがキューに到着してから処理までに費やされた合計時間を測定します。あるテナントが、システムが処理できるよりも多くのメッセージを公開してキューにバックログを作成すると、公平キューは他のテナントのドウェル時間への影響を最小限に抑えます。

定常状態

次の図は、4 つの異なるテナント (ラベル付き ABCD) からのメッセージを含むマルチテナントキューを示しています。キューは定常状態で動作し、コンシューマーがキューに表示されるとすぐにメッセージを受信するため、メッセージバックログはありません。すべてのテナントのドウェル時間は短くなります。すべてのコンシューマー容量がこの定常状態で完全に使用されているわけではありません。

4 つの異なるテナントからのメッセージを含むマルチテナントキュー (A、B、C、D で表されます)。キューは定常状態にあり、処理中のメッセージはテナント間で均等に分散され、すべてのテナントにバックログがなく、ドウェル時間が短くなります。

ノイズの多い近隣への影響

ノイズの多い近隣影響は、マルチテナントキュー内の 1 つのテナントがバックログを作成し、他のすべてのテナントのメッセージドウェル時間を増やすときに発生します。テナントは、他のテナントよりも大量のメッセージを送信したり、コンシューマーがその特定のテナントからのメッセージを処理するのに時間がかかると、ノイズの多い隣人になる可能性があります。

この図は、テナント A からのトラフィックの増加がキューにバックログを作成する方法を示しています。コンシューマーはテナント A からのメッセージのみの処理にビジー状態で、他のテナントからのメッセージはバックログで待機するため、すべてのテナントのドウェル時間が長くなります。

テナント A がトラフィックを増やし、キューにバックログを作成する場合の結果。テナント A のメッセージは処理中の状態で過剰に表され、他のテナントからのメッセージはバックログにスタックするため、ドウェル時間が長くなります。

公平キューによる緩和

Amazon SQSは、処理中にテナント間のメッセージ分散 (「処理中」状態) をモニタリングすることで、ノイズの多い近隣を検出します。テナントが他のテナントと比較して不釣り合いに多数のインフライトメッセージを持っている場合、Amazon SQS はそのテナントをノイズの多い隣人として識別し、他のテナントのメッセージ配信を優先します。このアプローチにより、他のテナントへのドウェル時間の影響が軽減されます。

この図は、Amazon SQS 公平キューがノイズの多い近隣問題にどのように対処するかを示しています。1 つのテナント (テナント A) がノイズが多い場合、Amazon SQS は他のテナント (BCD) からのメッセージを返すことを優先します。この優先順位付けは、クワイエットテナントのテナント BCD の低いドウェル時間を維持するのに役立ちます。一方、テナント A のメッセージのドウェル時間は、キューバックログが他のテナントに影響を与えずに消費されるまで長くなります。

処理中の状態をモニタリングすることで、公平なキューがノイズの多い近隣問題にどのように対処するかを示す図。テナント A がノイズが多い場合、SQS は他のテナント (B、C、D) からのメッセージを返して、処理中のメッセージがテナント間で均等に分散されるようにします。テナントのドウェル時間 (B、C、D) は短く、テナント A のメッセージのドウェル時間はキューバックログが消費されるまで長くなります。
注記

Amazon SQS はテナントあたりの消費レートを制限しません。これにより、コンシューマー容量があり、キューに返す他のメッセージがない場合に、ノイズの多い近隣テナントからメッセージを受信できます。Amazon SQS 標準キューと同様に、公平キューは事実上無制限のスループットを可能にし、キューに含めることができるテナントの数に制限はありません。

FIFO キューとの違い

FIFO キューは、各テナントからの転送中のメッセージの数を制限することで、厳密な順序を維持します。これによりノイズの多いネイバーを防ぐことができますが、各テナントのスループットが制限されます。公平キューは、高スループット、低ドウェル時間、公平なリソース割り当てが優先されるマルチテナントシナリオ向けに設計されています。公平キューを使用すると、複数のコンシューマーが同じテナントからのメッセージを同時に処理しながら、すべてのテナントが一貫した滞留時間を維持できます。

公平キューの使用

メッセージプロデューサーは、送信メッセージMessageGroupIdに を設定することでテナント識別子を追加できます。

// Send message with tenant identifier SendMessageRequest request = new SendMessageRequest() .withQueueUrl(queueUrl) .withMessageBody(messageBody) .withMessageGroupId("tenant-123"); // Tenant identifier sqs.sendMessage(request);

公平性機能は、MessageGroupId プロパティを持つメッセージのすべての Amazon SQS 標準キューに自動的に適用されます。コンシューマーコードを変更する必要はありません。API レイテンシーには影響せず、スループットの制限もありません。

公平キュー CloudWatch メトリクス

Amazon SQS には、ノイズの多い近隣への影響の軽減をモニタリングするのに役立つ追加の CloudWatch メトリクスが用意されています。例えば、Approximate..InQuietGroupsメトリクスを標準のキューレベルのメトリクスと比較できます。特定のテナントのトラフィックが急増すると、一般的なキューレベルのメトリクスで、バックログの増加やメッセージ経過時間が古くなる可能性があります。ただし、クワイエットグループを個別に見ると、ノイズのないメッセージグループやテナントのほとんどが影響を受けないことを特定できます。

以下に、ノイズの多いテナントが原因で標準キューのバックログメトリクス (ApproximateNumberOfMessagesVisible) が増加し、ノイズのないテナントのバックログ (ApproximateNumberOfMessagesVisibleInQuietGroups) は低いままである例を示します。

Graph showing queue backlog spike for noisy groups while quiet groups remain low.

Amazon SQS CloudWatch メトリクスとその説明の完全なリストについては、「Amazon SQS の CloudWatch メトリクス Amazon SQS」を参照してください。