Files d'attente Amazon SQS Fair - Amazon Simple Queue Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Files d'attente Amazon SQS Fair

Les files d'attente Amazon SQS Fair atténuent automatiquement l'impact des voisins bruyants dans les files d'attente mutualisées contenant des messages provenant de plusieurs entités logiques, telles que des clients, des applications clientes ou des types de messages. Dans ces environnements de files d'attente partagées, l'un des indicateurs de performance essentiels est le temps d'attente, qui mesure le temps total que les messages passent dans une file d'attente entre leur arrivée et leur traitement. Lorsqu'un locataire crée un arriéré dans la file d'attente en publiant plus de messages que le système ne peut en traiter, des files d'attente équitables minimisent l'impact sur le temps d'attente des autres locataires.

État stable

Le schéma suivant illustre une file d'attente à locataires multiples contenant des messages provenant de quatre locataires distincts (étiquetés A, B, C et D). La file d'attente fonctionne de manière stable et il n'y a aucun arriéré de messages car les consommateurs reçoivent des messages dès qu'ils apparaissent dans la file d'attente. Tous les locataires connaissent de faibles temps de séjour. Toutes les capacités des consommateurs ne sont pas pleinement utilisées dans cet état stable.

Une file d'attente multi-locataires contenant des messages provenant de quatre locataires différents (représentés par A, B, C, D). La file d'attente est stable, les messages en cours de vol étant répartis de manière égale entre les locataires, sans arriéré et avec un temps d'attente réduit pour tous les locataires.

Impact bruyant sur un voisin

Un impact bruyant sur les voisins se produit lorsqu'un locataire d'une file d'attente à locataires multiples crée un arriéré, ce qui augmente le temps d'attente des messages pour tous les autres locataires. Un locataire peut devenir un voisin bruyant en envoyant un plus grand volume de messages que les autres locataires, ou lorsque les consommateurs mettent plus de temps à traiter les messages de ce locataire en particulier.

Ce diagramme montre comment l'augmentation du trafic provenant du locataire A crée un arriéré dans la file d'attente. Les consommateurs sont occupés à traiter les messages provenant uniquement du locataire A, tandis que les messages des autres locataires attendent dans l'arriéré, ce qui augmente les temps d'attente pour tous les locataires.

Résultat lorsque le locataire A augmente le trafic et crée un backlog dans la file d'attente. Les messages du locataire A sont surreprésentés lorsqu'ils sont en cours de vol et les messages des autres locataires sont bloqués dans le carnet de commandes, ce qui augmente le temps d'attente.

Atténuation grâce à des files d'attente équitables

Amazon SQS détecte les voisins bruyants en surveillant la distribution des messages entre les locataires pendant le traitement (état « en vol »). Lorsqu'un locataire reçoit un nombre disproportionné de messages en cours de vol par rapport aux autres, Amazon SQS identifie ce locataire comme un voisin bruyant et donne la priorité à la distribution des messages aux autres locataires. Cette approche réduit l'impact du temps de séjour pour les autres locataires.

Ce schéma montre comment les files d'attente équitables d'Amazon SQS résolvent le problème des voisins bruyants. Lorsqu'un locataire (locataire A) devient bruyant, Amazon SQS donne la priorité aux messages renvoyés par les autres locataires (B, C et D). Cette hiérarchisation permet de maintenir de faibles temps d'attente pour les locataires calmes (locataires B, C et D), tandis que le temps d'attente pour les messages du locataire A est élevé jusqu'à ce que le backlog des files d'attente soit consommé sans impact sur les autres locataires.

Une illustration de la façon dont les files d'attente équitables permettent de résoudre le problème des voisins bruyants en surveillant l'état en vol. Lorsque le locataire A devient bruyant, SQS vise à renvoyer les messages des autres locataires (B, C, D) afin que les messages en vol soient répartis de manière égale entre les locataires. Le temps d'attente pour les locataires (B, C, D) restera faible, tandis que le temps d'attente pour les messages du locataire A sera élevé jusqu'à ce que le backlog des files d'attente soit résorbé.
Note

Amazon SQS ne limite pas le taux de consommation par locataire. Il permet aux consommateurs de recevoir des messages de locataires voisins bruyants lorsque la capacité de consommation est atteinte et que la file d'attente n'a aucun autre message à renvoyer. À l'instar des files d'attente standard Amazon SQS, les files d'attente équitables permettent un débit pratiquement illimité, et il n'y a aucune limite quant au nombre de locataires que vous pouvez avoir dans votre file d'attente.

Différence avec les files d'attente FIFO

Les files d'attente FIFO maintiennent un ordre strict en limitant le nombre de messages envoyés en vol par chaque locataire. Bien que cela évite le bruit des voisins, cela limite le débit pour chaque locataire. Les files d'attente équitables sont conçues pour les scénarios multi-locataires dans lesquels un débit élevé, un faible temps d'attente et une allocation équitable des ressources sont des priorités. Les files d'attente équitables permettent à plusieurs consommateurs de traiter simultanément les messages d'un même locataire tout en aidant tous les locataires à maintenir des durées de séjour cohérentes.

Utiliser des files d'attente équitables

Les producteurs de vos messages peuvent ajouter un identifiant de locataire en définissant un MessageGroupId sur un message sortant :

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

La fonctionnalité d'équité sera automatiquement appliquée à toutes les files d'attente standard Amazon SQS pour les messages contenant cette propriété. MessageGroupId Il ne nécessite aucune modification du code client, n'a aucun impact sur la latence des API et ne comporte aucune limitation de débit.

Indicateurs relatifs aux files d'attente CloudWatch équitables

Amazon SQS fournit des CloudWatch mesures supplémentaires pour vous aider à contrôler l'atténuation de l'impact du bruit causé par les voisins. Par exemple, vous pouvez comparer les Approximate..InQuietGroups mesures avec les mesures standard au niveau de la file d'attente. Lors d'une augmentation du trafic pour un locataire en particulier, les indicateurs généraux relatifs aux files d'attente peuvent révéler des arriérés croissants ou un vieillissement des messages. Toutefois, en examinant les groupes silencieux séparément, vous pouvez constater que la plupart des groupes de messages ou des locataires peu bruyants ne sont pas concernés.

Vous trouverez ci-dessous un exemple où la métrique standard de l'arriéré de files d'attente (ApproximateNumberOfMessagesVisible) augmente en raison d'un locataire bruyant, tandis que l'arriéré pour les locataires non bruyants (ApproximateNumberOfMessagesVisibleInQuietGroups) reste faible.

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

Pour obtenir la liste complète des CloudWatch métriques Amazon SQS et leurs descriptions, consultez les CloudWatch métriques d'Amazon SQS.