Tipi di coda

Amazon SQS offre due tipi di coda per i diversi requisiti delle applicazioni:

Code standard

Throughput illimitato: le code standard supportano un numero quasi illimitato di transazioni al secondo (TPS) per operazione API.

Consegna "At-Least-Once": un messaggio viene consegnato almeno una volta, ma di tanto in tanto viene consegnata più di una copia di un messaggio.

Miglior ordine possibile: di tanto in tanto i messaggi potrebbero essere consegnati in un ordine diverso da quello di invio.

Code FIFO

Throughput elevato: per impostazione predefinita, le code FIFO supportano fino a 300 messaggi al secondo (300 operazioni di invio, ricezione o eliminazione al secondo). Quando riunisci in batch 10 messaggi per operazione (massimo), le code FIFO possono supportare fino a 3.000 messaggi al secondo. Per richiedere un aumento dei limiti, esegui una richiesta di supporto.

Elaborazione "exactly-once": un messaggio viene consegnato una volta e rimane disponibile fino a quando un cliente non lo elabora e lo cancella. Non vengono introdotti duplicati introdotti nella coda.

Consegna First-In-First-Out: viene mantenuto l'ordine esatto in cui i messaggi vengono inviati e ricevuti (ovvero First-In-First-Out).

sqs-what-is-sqs-standard-queue-diagram
sqs-what-is-sqs-fifo-queue-diagram

Puoi utilizzare code standard di messaggi in molti scenari, se la tua applicazione può elaborare i messaggi che arrivano più di una volta e nell'ordine sbagliato. Per esempio:

  • Separa le richieste degli utenti attivi dal lavoro intenso in background: consenti agli utenti di caricare contenuti multimediali mentre li ridimensionano o li codificano.
  • Assegna le attività a più nodi dei lavoratori: elabora un numero elevato di richieste di convalida delle carte di credito.
  • Elabora in batch i messaggi per l’elaborazione futura: pianifica più voci da aggiungere a un database.

Le code FIFO sono progettate per migliorare la messaggistica tra le applicazioni quando l'ordine delle operazioni e degli eventi è fondamentale o laddove non possono essere tollerati i duplicati, ad esempio:

  • Assicura che i comandi immessi dagli utenti siano eseguiti nel giusto ordine.
  • Visualizza il prezzo corretto del prodotto inviando modifiche sui prezzi nel giusto ordine.
  • Impedisci a uno studente di iscriversi a un corso prima di aver creato un account.

Funzionalità

  • Code e messaggi illimitati: crea code Amazon SQS illimitate con un numero illimitato di messaggio in qualsiasi regione.
  • Dimensione payload: i payload dei messaggi possono contenere fino a 256 KB di testo in qualunque formato. Ogni blocco di payload di 64 KB equivale, ai fini di fatturazione, a 1 richiesta. Una singola chiamata API con un payload di 256 KB, ad esempio, sarà fatturata come quattro richieste. Per inviare messaggi di dimensioni superiori a 256 KB, puoi utilizzare l' Amazon SQS Extended Client Library for Java, che utilizza Amazon S3 per memorizzare il payload dei messaggi. Un riferimento al payload dei messaggi verrà inviato tramite SQS.
  • Batch: invia, riceve o elimina messaggi in batch fino a 10 messaggi o 256 KB. Poiché i batch hanno lo stesso costo dei messaggi singoli, SQS può rivelarsi più conveniente per i clienti che utilizzano l'invio in batch.
  • Polling lungo: riduce il polling estraneo per minimizzare i costi e ricevere nuovi messaggi il più rapidamente possibile. Quando la coda è vuota, le richieste di polling lungo aspettano fino a 20 secondi l'arrivo del messaggio successivo. Le richieste di polling lungo hanno lo stesso costo delle richieste normali.
  • Conservazione dei messaggi in coda fino a un massimo di 14 giorni.
  • Invio e lettura dei messaggi simultaneamente.
  • Blocco dei messaggi: dopo la ricezione, il messaggio viene bloccato durante l'elaborazione. Questo impedisce che altri computer elaborino lo stesso messaggio contemporaneamente. Se l'elaborazione del messaggio non viene completata, il blocco scade e il messaggio diventa di nuovo disponibile.
  • Condivisione di code: condivide le code Amazon SQS con la massima sicurezza, sia in modo anonimo sia con specifici account AWS. La condivisione di code può inoltre essere limitata in base a indirizzo IP e ora del giorno.
  • Crittografia lato server o SSE (Server-Side Encryption): protegge i contenuti dei messaggi nelle code Amazon SQS avvalendosi di chiavi gestite da AWS Key Management Service (AWS KMS). SSE crittografa i messaggi non appena Amazon SQS li riceve. I messaggi sono archiviati in forma crittografata e Amazon SQS li decrittografa solo quando vengono inviati a un consumer autorizzato.
  • Code DLQ: gestiscono i messaggi che non sono stati elaborati correttamente da un consumer con code DLQ. Quando viene raggiunto il numero massimo di ricezioni per un messaggio, questo viene spostato sulla coda DLQ associata alla coda di origine. Impostano processi di consumer separati per le DLQ per analizzare e capire perché i messaggi si bloccano. Le DLQ devono essere dello stesso tipo della coda di origine (standard o FIFO).

Utilizzare Amazon SQS con altri servizi Web di infrastruttura di AWS

L'accodamento di messaggi di Amazon SQS può essere utilizzato con altri servizi AWS come Redshift, DynamoDB, RDS, EC2, ECS, Lambda e S3, per aumentare la scalabilità e l'affidabilità delle applicazioni distribuite. Ecco alcuni schemi progettuali comuni:

  • Code di lavoro: separano i componenti di un'applicazione distribuita che possono non elaborare la stessa quantità di lavoro simultaneamente.
  • Operazioni di buffer e batch: aumentano la scalabilità e l'affidabilità della tua architettura e spianano i picchi di volume temporanei senza perdita di messaggi o aumento di latenza.
  • Offload di richiesta: spostano le operazioni lente dai percorsi delle richieste interattive accodando la richiesta.
  • Fanout: integra SQS a Simple Notification Service (SNS) per inviare copie identiche di un messaggio parallelamente a più code.
  • Priorità: utilizza code separate per classificare la priorità del lavoro.
  • Scalabilità: poiché le code dei messaggi separano i tuoi processi, per aumentare il tasso di invio o ricezione dei messaggi basta aggiungere un altro processo.
  • Resilienza: in caso di errore di una parte del sistema, non è necessario arrestare tutto il sistema. Le code di messaggi separano i componenti del tuo sistema, quindi in caso di errore di un processo che legge i messaggi della coda, i messaggi possono sempre essere aggiunti alla coda per essere elaborati quando il sistema verrà ripristinato.

Utilizzi previsti e limitazioni

L'uso di questo servizio è soggetto al contratto con il cliente Amazon Web Services.

Ulteriori informazioni sui prezzi di Amazon SQS

Visita la pagina dei prezzi
Ti senti pronto?
Nozioni di base su Amazon SQS
Hai altre domande?
Contattaci