Le code per le fiere di Amazon SQS - Amazon Simple Queue Service

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Le code per le fiere di Amazon SQS

Amazon SQS fair queues mitiga automaticamente l'impatto del rumore di prossimità nelle code multi-tenant che contengono messaggi provenienti da più entità logiche, come clienti, applicazioni client o tipi di messaggi. In questi ambienti di coda condivisi, una metrica prestazionale fondamentale è il tempo di permanenza, che misura il tempo totale di permanenza dei messaggi in coda dall'arrivo all'elaborazione. Quando un tenant crea un arretrato nella coda pubblicando più messaggi di quanti il sistema sia in grado di gestire, fair queues riduce al minimo l'impatto sul tempo di permanenza per gli altri tenant.

Stato stazionario

Il diagramma seguente illustra una coda multi-tenant contenente messaggi provenienti da quattro tenant distinti (etichettati A, B, C e D). La coda funziona in uno stato stazionario e non vi è alcun arretrato di messaggi in quanto i consumatori ricevono i messaggi non appena compaiono nella coda. Tutti gli inquilini hanno tempi di permanenza bassi. Non tutta la capacità dei consumatori è pienamente utilizzata in questo stato stazionario.

Una coda multi-tenant che contiene messaggi provenienti da quattro diversi tenant (rappresentati da A, B, C, D). La coda è in uno stato stazionario con messaggi in volo distribuiti uniformemente tra gli inquilini, senza arretrati e tempi di permanenza ridotti per tutti gli inquilini.

Impatto rumoroso sui vicini

L'impatto di Noisy Neighbor si verifica quando un tenant in una coda multi-tenant crea un backlog, aumentando il tempo di permanenza dei messaggi per tutti gli altri tenant. Un tenant può diventare un vicino rumoroso inviando un volume di messaggi maggiore rispetto agli altri tenant o quando i consumatori impiegano più tempo a elaborare i messaggi di quel particolare tenant.

Questo diagramma illustra come l'aumento del traffico proveniente dal Tenant A crei un arretrato nella coda. I consumatori sono impegnati a elaborare i messaggi provenienti solo dal Tenant A, mentre i messaggi degli altri tenant attendono nel backlog, con conseguenti tempi di permanenza più lunghi per tutti i tenant.

Il risultato è quando il tenant A aumenta il traffico e crea un arretrato nella coda. I messaggi del tenant A sono sovrarappresentati durante lo stato in volo e i messaggi degli altri inquilini rimangono bloccati nel backlog, con conseguente aumento del tempo di permanenza.

Attenuazione con code eque

Amazon SQS rileva i vicini rumorosi monitorando la distribuzione dei messaggi tra i tenant durante l'elaborazione (lo stato «in volo»). Quando un tenant ha un numero sproporzionato di messaggi in volo rispetto agli altri, Amazon SQS identifica quel tenant come un vicino rumoroso e dà priorità alla consegna dei messaggi per gli altri tenant. Questo approccio riduce l'impatto del tempo di permanenza sugli altri tenant.

Questo diagramma illustra come Amazon SQS fair queues risolve il problema dei vicini rumorosi. Quando un tenant (Tenant A) diventa rumoroso, Amazon SQS dà la priorità alla restituzione dei messaggi da altri tenant (B, C e D). Questa prioritizzazione aiuta a mantenere bassi i tempi di permanenza per i tenant silenziosi (Tenant B, C e D), mentre il tempo di permanenza per i messaggi del Tenant A è elevato fino a esaurire il backlog della coda senza influire sugli altri tenant.

Un esempio di come Fair Queues risolva il problema dei vicini rumorosi monitorando lo stato in volo. Quando il tenant A diventa rumoroso, SQS intende restituire i messaggi degli altri inquilini (B, C, D) in modo che i messaggi in volo siano distribuiti uniformemente tra i tenant. Il tempo di permanenza per i tenant (B, C, D) rimarrà basso, mentre il tempo di permanenza per i messaggi del tenant A verrà elevato fino all'esaurimento del backlog della coda.
Nota

Amazon SQS non limita il tasso di consumo per tenant. Consente ai consumatori di ricevere messaggi da inquilini vicini rumorosi quando il numero di utenti è disponibile e la coda non ha altri messaggi da restituire. Come le code standard di Amazon SQS, le code fair consentono un throughput praticamente illimitato e non ci sono limiti al numero di tenant che è possibile avere in coda.

Differenza rispetto alle code FIFO

Le code FIFO mantengono un ordine rigoroso limitando il numero di messaggi in volo da ciascun inquilino. In questo modo si evitano i rumorosi vicini, dall'altro limita la velocità di trasmissione per ogni inquilino. Le code eque sono progettate per scenari multi-tenant in cui la produttività elevata, il tempo di permanenza ridotto e l'equa allocazione delle risorse sono priorità. Le code eque consentono a più consumatori di elaborare contemporaneamente i messaggi dello stesso inquilino, aiutando tutti gli inquilini a mantenere tempi di permanenza costanti.

Utilizzo di code eque

I produttori di messaggi possono aggiungere un identificatore del tenant impostando un MessageGroupId su un messaggio in uscita:

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

La funzionalità di equità verrà applicata automaticamente in tutte le code standard di Amazon SQS per i messaggi con la proprietà. MessageGroupId Non richiede alcuna modifica del codice consumer, non ha alcun impatto sulla latenza delle API e non presenta limitazioni di throughput.

Metriche relative alle code eque CloudWatch

Amazon SQS fornisce CloudWatch parametri aggiuntivi per aiutarti a monitorare la mitigazione dell'impatto dei rumori vicini. Ad esempio, puoi confrontare Approximate..InQuietGroups le metriche con le metriche standard a livello di coda. Durante i picchi di traffico per uno specifico tenant, le metriche generali a livello di coda potrebbero rivelare un aumento degli arretrati o una vecchiaia dei messaggi più vecchia. Tuttavia, esaminando isolatamente i gruppi silenziosi, è possibile constatare che la maggior parte dei gruppi di messaggi o degli inquilini non rumorosi non ne risente.

Di seguito è riportato un esempio in cui la metrica standard del backlog delle code (ApproximateNumberOfMessagesVisible) aumenta a causa di un tenant rumoroso, mentre il backlog per i tenant non rumorosi () rimane basso. ApproximateNumberOfMessagesVisibleInQuietGroups

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

Per un elenco completo dei parametri di Amazon SQS e delle relative descrizioni, consulta CloudWatch CloudWatch Metrics for Amazon SQS.