Cos’è la messaggistica pub/sub?
La messaggistica publish-subscribe, o messaggistica pub/sub, è un modello di comunicazione asincrona che consente agli sviluppatori di realizzare facilmente applicazioni altamente funzionali e architettonicamente complesse nel cloud. Nella moderna architettura cloud, le applicazioni sono disaccoppiate in blocchi più piccoli e indipendenti chiamati servizi. La messaggistica pub/sub fornisce notifiche istantanee di eventi per questi sistemi distribuiti. Supporta una comunicazione scalabile e affidabile tra moduli software indipendenti.
Come funziona la messaggistica pub/sub?
Il sistema publish-subscribe (pub/sub) presenta quattro elementi chiave.
Messaggi
Una messaggio è un dato di comunicazione inviato da un mittente a un destinatario. I tipi di dati di messaggi possono variare da stringhe a oggetti complessi rappresentanti testi, video, dati di sensori, audio o altri contenuti digitali.
Argomenti
Ad ogni messaggio è associato un argomento. L'argomento funge da intermediario tra mittenti e destinatari. Conserva un elenco di destinatari interessati al messaggio sull'argomento in questione.
Abbonati
Un abbonato è il destinatario del messaggio. Gli abbonati devono registrarsi (o abbonarsi) agli argomenti di proprio interesse. Possono svolgere diverse funzioni oppure fare qualcosa di diverso parallelamente al messaggio.
Editori
L'editore è componente che invia i messaggi. Crea un messaggio su un dato argomento e lo invia soltanto agli abbonati all'argomento in questione. Questa interazione tra l'editore e gli abbonati e una relazione uno a molti. L'editore non ha bisogno di sapere chi è il fruitore dell'informazione che veicola, e gli abbonati non hanno bisogno di sapere da dove arriva il messaggio.
Quali sono le caratteristiche del sistema di messaggistica pub/sub?
Le applicazioni sviluppato con un modello publish-subscribe (pub/sub) presentano logiche di comunicazione e applicazione separate. L'infrastruttura di messaggistica disaccoppia la consegna dei messaggi dagli editori e dagli abbonati, e invia la comunicazione a diversi abbonati in maniera asincrona.
Il sistema di comunicazione pub/sub presenta le seguenti caratteristiche.
Consegna push
La messaggistica pub/sub invia immediatamente notifiche push asincrone relative all'evento nel momento in cui un messaggio viene pubblicato nell'ambito di un argomento. Gli abbonati ricevono una notifica quando il messaggio è disponibile.
Protocolli di consegna multipla
Gli argomenti si collegano a diversi tipi di endpoint, quali code dei messaggi, funzioni serverless, server HTTP e indirizzi e-mail.
Scopri di più sulle code dei messaggi con AWS »
Fan-out
Questo si verifica quando un messaggio viene inviato a un argomento e successivamente replicato e inviato a diversi endpoint. Il fan-out rende possibile l'invio di notifiche asincrone relative agli eventi che, a loro volta, rendono possibile l'elaborazione in parallelo.
Filtraggio
La funzione di filtraggio permette all'abbonato di creare una politica di filtraggio dei messaggi. In questo modo, invece di ricevere ogni singolo messaggio pubblicato nell'ambito dell'argomento, riceverà soltanto le notifiche di suo interesse.
Multiplazione
In alcuni casi, gli editori possono essere anche abbonati. È possibile effettuare la multiplazione dei flussi di messaggi e creare sistemi collegati gli uni agli altri a livello interno in modo coerente.
Quali sono i vantaggi della messaggistica pub/sub?
Il modello publish-subscribe (pub/sub) permette l'utilizzo dell'architettura basata su eventi, richiesta in diverse applicazioni moderne. È possibile utilizzare gli eventi per attivarla e comunicare fra servizi disaccoppiati. Un evento è un cambiamento di stato, o un aggiornamento, come un articolo che viene messo nel carrello su un sito Web di e-commerce.
La messaggistica pub/sub offre vantaggi significativi agli sviluppatori che sviluppano applicazioni basate su eventi in tempo reale. Di seguito illustriamo alcuni dei vantaggi.
Eliminazione del polling
Gli argomenti oggetto dei messaggi permettono la consegna istantanea e basata sulla tecnologia push, eliminando il bisogno, per chi riceve i messaggi, di controllare periodicamente, o eseguire il polling, nuove informazioni o aggiornamenti. Ciò promuove tempi di risposta più rapidi e riduce la latenza della consegna, che può essere un vero e proprio problema nei sistemi in cui non vi è alcun margine.
Individuazione degli obiettivi dinamica
Il modello pub/sub facilita la scoperta di servizi, rendendola più naturale e meno incline agli errori. Invece di tenere un registro di colleghi cosicché l'applicazione possa inviare i messaggi, un editore potrà postare i messaggi per argomento. In questo modo, chiunque fosse interessato potrà collegare il proprio endpoint all'argomento in questione e iniziare a ricevere i messaggi. Gli abbonati possono cambiare, aumentare o scomparire e il sistema si adeguerà di conseguenza.
Disaccoppiare e dimensionare in modo indipendente
Grazie al modello pub/sub, il software diventa più flessibile. Gli editori e gli abbonati vengono disaccoppiati e lavorano in maniera indipendente gli uni dagli altri. Ciò ti permetterà di occuparti dello sviluppo e del dimensionamento separatamente. Potrai decidere di occuparti degli ordini in un modo per il mese in corso e in modo diverso il mese successivo. L'aggiunta o la modifica di funzionalità non scatenerà alcuna reazione a catena nel sistema, poiché grazie al modello pub/sub potrai mostrare il modo in cui le cose funzionano insieme.
Semplificare la comunicazione
I codici nell'ambito della comunicazione e dell'integrazione sono tra i più difficili da scrivere. Il modello pub/sub riduce tale complessità rimuovendo tutti i collegamenti point-to-point e sostituendoli con un unico collegamento all'argomento oggetto del messaggio. L'argomento gestirà le iscrizioni per stabilire quali messaggi devono essere inviati a quali endpoint. Meno callback si traducono in un accoppiamento debole, oltre a un codice più facile da mantenere ed estendere.
Durabilità
I servizi di messaggistica pub/sub offrono spesso un'elevata durabilità e consegna at-least-once, grazie all'archiviazione di copie di uno stesso messaggio su più server.
Sicurezza
Gli argomenti oggetto del messaggio autenticano le applicazioni che cercano di pubblicare contenuti e consentono di utilizzare endpoint crittografati per proteggere i messaggi in transito nella rete.
Quali sono i casi d'uso della messaggistica pub/sub?
Riportiamo qui di seguito i casi d'uso più comuni del sistema di messaggistica publish-subscribe (pub/sub).
Elaborazione parallela asincrona
Gli eventi pubblicati nell'ambito di un argomento oggetto dei messaggi possono far sì che più lavoratori svolgano attività necessarie ma non correlate nello stesso momento.
Implementazione dell'applicazione e degli avvisi di sistema
Inviare immediatamente aggiornamenti fondamentali o notifiche di eventi asincrone ai componenti coinvolti dell'applicazione e agli utenti.
Gestione asincrona dei flussi di lavoro
Trasmettere gli eventi tra le applicazioni, trasferire i dati tra gli archivi di dati, aggiornare le cache distribuite o aggiornare i registri nei sistemi aziendali.
Equilibrio dei carico di lavoro
Dividere le attività in gruppi per l'elaborazione in massa, o suddividere attività più grandi in diverse attività più piccole e utilizzare le code di messaggi per dividere il lavoro tra più persone.
Log in a diversi sistemi
Registrare eventi da analizzare in seguito, acquisire log relativi ad operazioni e sicurezza, o archiviare per soddisfare i requisiti di backup o conformità.
Utilizzo del fan-out per la replica
Replicare dati tra ambienti di sviluppo e produzione o sviluppare e testare i dati in tempo reale.
Coordinamento di applicazioni serverless
Effettuare il fan-out di notifiche asincrone di eventi a funzioni distribuite e code di messaggi per coordinare i componenti delle applicazioni serverless.
Trasmissione di dati IoT
Il modello pub/sub è una soluzione estremamente efficace per l'interazione dei dispositivi dell'Internet delle Cose (IoT). I dispositivi possono trasmettere i dati senza alcuna difficoltà a sistemi di back-end o tra loro stessi.
Qual è la differenza tra code di messaggi e messaggistica pub/sub?
Una coda dei messaggi è un'altra forma di comunicazione asincrona utilizzata nelle architetture serverless e di microservizi. I messaggi vengono salvati nella coda finché non vengono elaborati ed eliminati. Per le code di messaggi, è necessario che il mittente sappia con chi sta scambiando i messaggi. L'ordinamento dei messaggi può causare anche rallentamenti nel sistema.
Al contrario, il modello publish-subscribe (pub/sub) consente una maggiore flessibilità. Più abbonati interessati possono ricevere messaggi nello stesso momento e in modo asincrono. Gli editori non hanno bisogno di sapere chi sono gli abbonati. La gestione dei messaggi è più affidabile e scalabile e offre prestazioni migliori.
In che modo AWS può supportare i requisiti della messaggistica pub/sub?
Amazon Web Services (AWS) offre due servizi che è possibile utilizzare per diverse applicazioni publish-subscribe (pub/sub).
API pub/sub
AWS AppSync è un servizio completamente gestito per la creazione di API GraphQL e pub/sub serverless che semplificano lo sviluppo delle applicazioni. È possibile creare un unico endpoint per effettuare query, aggiornamenti o pubblicazioni di dati in modo sicuro.
Le API pub/sub create con AWS AppSync offrono la possibilità di pubblicare aggiornamenti dei dati in tempo reale sui client API abbonati tramite connessioni WebSocket serverless. È possibile creare esperienze coinvolgenti in tempo reale per diversi casi d'uso. Ad esempio, potrai distribuire funzionalità relative ai risultati aggiornati delle partite, ai dati finanziari, alla partecipazione del pubblico, alle elezioni o basate sulla posizione come mappe e notifiche push di marketing.
Ecco alcune cose che potrai fare con AWS AppSync:
- Accedere ai dati da una o più origini o microservizi con un'unica richiesta di rete
- Interagire e aggiornare i dati, anche offline, con la sincronizzazione dei dati offline, il controllo delle versioni e la risoluzione dei conflitti
- Pagare solo per le richieste alla tua API e per i messaggi in tempo reale consegnati ai clienti connessi
Messaggistica pub/sub
Amazon Simple Notification Service (SNS) semplifica la realizzazione di un'applicazione grazie all'utilizzo del modello di messaggistica pub/sub. Potrai inviare messaggi dalle tue applicazioni ai clienti o ad altre applicazioni in modo scalabile ed economicamente vantaggioso.
Amazon SNS offre diverse funzioni:
- Messaggistica con velocità di trasmissione effettiva elevata, basata su push e molti a molti tra sistemi distribuiti, microservizi e applicazioni serverless basate su eventi
- Crittografia dei messaggi e privacy del traffico
- Funzionalità di fan-out tra le categorie AWS, come analisi, calcolo, container, database, Internet delle Cose (IoT), machine learning (ML), sicurezza e archiviazione
Inizia a utilizzare il modello pub/sub su AWS creando un account AWS gratuito oggi stesso.
Fasi successive su AWS
Ottieni accesso istantaneo al Piano gratuito di AWS.