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 gérer, 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.
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.
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.
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 d'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.
Pour en savoir plus sur la façon dont Amazon SQS détecte les voisins bruyants et gère les bons de livraison des messages, consultez Comment fonctionnent les files d'attente équitables d'Amazon SQS.
Comment utiliser les files d'attente équitables
Pour permettre des files d'attente équitables, les producteurs de messages doivent ajouter un identifiant de locataire en définissant un pour MessageGroupId les messages sortants :
// 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.
Note
MessageGroupIdsur les files d'attente standard avec des files d'attente équitables n'a pas le même comportement que MessageGroupId sur les files d'attente FIFO. Dans les files d'attente standard, MessageGroupId il est utilisé uniquement comme identifiant de locataire pour les files d'attente régulières et n'impose pas l'ordre des messages. Pour en savoir plus MessageGroupId sur les files d'attente FIFO, consultez Utilisation de l'ID de groupe de messages avec les files d'attente FIFO Amazon SQS.
Quand utiliser des files d'attente équitables
Envisagez d'utiliser des files d'attente équitables lorsque toutes les conditions suivantes s'appliquent à votre file d'attente :
-
La file d'attente est multilocataire. La file d'attente contient des messages appartenant à plusieurs entités logiques, telles que des clients, des applications clientes ou des types de demandes, et vous pouvez identifier chaque entité à l'aide d'un
MessageGroupId. -
La file d'attente est à haut débit. Lorsque le débit est faible, l'explosion d'un locataire crée rarement un arriéré qui affecte les autres locataires. À haut débit, il n'est pas pratique de surdimensionner le parc de clients pour absorber chaque rafale, et même avec l'auto-scaling, le délai avant que les nouveaux clients ne se connectent peut entraîner la formation de backlogs.
-
Le temps d'attente fait partie de la qualité de service de votre application. Les files d'attente régulières protègent les locataires calmes du temps d'attente élevé causé par un voisin bruyant. Si votre application n'est pas sensible au temps d'attente, la protection contre les voisins bruyants fournie par les files d'attente régulières peut ne pas être nécessaire.
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.
Pour obtenir la liste complète des CloudWatch métriques Amazon SQS et leurs descriptions, consultez les CloudWatch métriques d'Amazon SQS.