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à.
Come funzionano le code eque di Amazon SQS
Le code fair di Amazon SQS mitigano automaticamente l'impatto del rumore di prossimità nelle code multi-tenant impedendo a un singolo tenant di rallentare l'elaborazione dei messaggi per altri tenant. Quando le code eque rilevano che un tenant sta utilizzando una quota sproporzionata della capacità di consumo della coda, danno priorità alla consegna dei messaggi da tenant silenziosi.
Identificazione del locatario
Fair Queues identifica gli inquilini in base alla MessageGroupId proprietà su ogni messaggio. I messaggi che condividono lo stesso MessageGroupId appartengono allo stesso tenant. Una coda equa può contenere un mix di messaggi con e senza a. MessageGroupId Ogni messaggio senza a MessageGroupId viene trattato come appartenente a un tenant distinto.
Ti consigliamo di impostare un valore MessageGroupId su ogni messaggio inviato a una coda equa, utilizzando un identificatore che corrisponda a un'entità reale del sistema, ad esempio un ID cliente, un ID dell'applicazione client o un tipo di richiesta.
Come funziona il rilevamento
Amazon SQS rileva i vicini rumorosi utilizzando due misure:
-
Condivisione simultanea: i messaggi in arrivo del tenant, come frazione di tutti i messaggi in corso presenti nella coda. In questo modo vengono rilevati gli inquilini che elaborano più messaggi contemporaneamente, a causa di un volume di invio elevato, di un'elaborazione lenta o di entrambi.
-
Ripartizione del tempo di elaborazione: la quota recente dell'inquilino rispetto al tempo totale di elaborazione del consumatore. In questo modo vengono rilevati gli inquilini i cui messaggi sono pochi ma sono lenti da elaborare, in modo che il tenant occupi una notevole quantità di tempo da dedicare ai consumatori senza dover ricevere molti messaggi contemporaneamente.
Un inquilino viene contrassegnato come vicino rumoroso quando si verifica una delle seguenti condizioni:
-
Quota concorrente: l'inquilino rappresenta più del 10% dei messaggi in volo presenti in coda e ha almeno 30 messaggi propri in transito.
-
Ripartizione dei tempi di elaborazione: la quota recente del locatario rispetto al tempo totale di elaborazione da parte dei consumatori supera il 10%.
Poiché Amazon SQS è un sistema distribuito, queste soglie sono approssimative e il rilevamento potrebbe non attivarsi ai valori esatti descritti.
Come cambia l'ordine di recapito dei messaggi
Quando un tenant viene rilevato come un vicino rumoroso, Amazon SQS dà la priorità alla consegna di messaggi da tenant silenziosi. Le istanze consumer che effettuano il polling dei messaggi ricevono messaggi da tenant silenziosi ogni volta che sono disponibili messaggi silenziosi. Questa definizione delle priorità continua fino a quando la quota di concorrenza del vicino rumoroso e la condivisione dei tempi di elaborazione non scendono a livelli paragonabili a quelli degli inquilini silenziosi.
I messaggi Noisy Neighbor non vengono eliminati o limitati. Il loro tempo di permanenza aumenta man mano che viene data priorità ai messaggi silenziosi, e torna alla normalità una volta eliminato l'arretrato. Quando non ci sono messaggi silenziosi in attesa, le istanze dei consumatori ricevono come di consueto messaggi rumorosi relativi ai vicini.
Se più inquilini vengono rilevati contemporaneamente come vicini rumorosi, le istanze dei consumatori ricevono per prime i messaggi dal tenant rumoroso con il minor numero di messaggi in volo. Questo aiuta a bilanciare i tempi di elaborazione tra inquilini rumorosi.
Quando un vicino rumoroso diventa silenzioso
Un inquilino non viene più considerato un vicino rumoroso quando si verifica una delle seguenti condizioni:
-
L'arretrato del locatario è stato completamente consumato.
-
Nessun messaggio dell'inquilino è rimasto in volo per un periodo ininterrotto di 5 minuti.
Dopodiché, ai messaggi del tenant non viene più assegnata alcuna priorità e vengono trattati allo stesso modo dei messaggi di qualsiasi altro tenant silenzioso.
Considerazioni sulla capacità dei consumatori
Affinché la misura della condivisione simultanea funzioni in modo efficace, i vostri consumatori devono elaborare contemporaneamente un numero sufficiente di messaggi da far risaltare la quota di messaggi in volo di un inquilino. Tenetene conto quando dimensionate la vostra flotta di consumatori.
Quando si utilizza Lambda come consumatore tramite la mappatura delle sorgenti degli eventi, il numero di messaggi in volo dipende sia dalla concorrenza della funzione Lambda che dalla dimensione del batch. Valutate insieme queste impostazioni quando dimensionate i vostri consumatori.
Anche se il numero di messaggi in transito è troppo basso perché venga attivata la soglia di condivisione simultanea, la misura della condivisione dei tempi di elaborazione è comunque in grado di rilevare i vicini rumorosi. Tuttavia, le code eque funzionano meglio quando i consumatori elaborano contemporaneamente un numero sufficiente di messaggi per consentire la valutazione di entrambe le misure.