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 viene sfruttata appieno in questo stato stazionario.
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.
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.
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.
Per dettagli su come Amazon SQS rileva i vicini rumorosi e gestisce l'ordine di recapito dei messaggi, consulta How Amazon SQS fair queues work.
Come usare le code oneste
Per consentire code eque, i produttori di messaggi dovrebbero aggiungere un identificatore del tenant impostando un MessageGroupId valore sui messaggi 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.
Nota
MessageGroupIdsulle code standard con code corrette non ha lo stesso comportamento delle code FIFO. MessageGroupId Nelle code standard, MessageGroupId viene utilizzato solo come identificatore degli inquilini per le code eque e non impone l'ordinamento dei messaggi. Per informazioni dettagliate MessageGroupId sulle code FIFO, consulta Usare l'ID del gruppo di messaggi con Amazon SQS FIFO Queues.
Quando utilizzare le code eque
Valuta la possibilità di utilizzare le code eque quando alla tua coda si applicano tutte le seguenti condizioni:
-
La coda è multi-tenant. La coda contiene messaggi che appartengono a più entità logiche, come clienti, applicazioni client o tipi di richieste, ed è possibile identificare ogni entità con un.
MessageGroupId -
La coda è ad alta velocità. Con un throughput basso, il burst di un inquilino raramente crea un arretrato che incide sugli altri inquilini. Con un throughput elevato, sovradimensionare la flotta di consumatori per assorbire ogni picco non è pratico e, anche con l'auto-scaling, il ritardo prima che nuovi clienti arrivino online può causare la formazione di arretrati.
-
Il tempo di permanenza fa parte della qualità del servizio dell'applicazione. Le code eque proteggono gli inquilini silenziosi dai tempi di permanenza prolungati causati da un vicino rumoroso. Se la tua applicazione non è sensibile al tempo di sosta, potrebbe non essere necessaria la protezione «rumorosa» fornita da Fair Fair.
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
Per un elenco completo dei parametri di Amazon SQS e delle relative descrizioni, consulta CloudWatch CloudWatch Metrics for Amazon SQS.