Pub/Sub è un servizio di messaggistica asincrono e scalabile che disaccoppia i servizi che producono messaggi dai servizi che li elaborano.
Pub/Sub consente ai servizi di comunicare in modo asincrono, con latenze in genere dell'ordine di 100 millisecondi.
Pub/Sub viene utilizzato per le pipeline di analisi dei flussi di dati e di integrazione dei dati per caricare e distribuire i dati. È altrettanto efficace come middleware orientato alla messaggistica per l'integrazione di servizi o come coda per il parallelismo delle attività.
Pub/Sub ti consente di creare sistemi di produttori e consumer di eventi, chiamati publisher e subscriber. I publisher comunicano con i sottoscrittori in modo asincrono trasmettendo eventi anziché tramite chiamate di procedura remota (RPC) sincrone.
I publisher inviano eventi al servizio Pub/Sub, indipendentemente da come o quando questi vengano elaborati. Pub/Sub poi invia gli eventi a tutti i servizi che reagiscono. Nei sistemi che comunicano tramite RPC, i publisher devono attendere che gli iscritti ricevano i dati. Tuttavia, l'integrazione asincrona in Pub/Sub aumenta la flessibilità e la robustezza del sistema complessivo.
Per iniziare a utilizzare Pub/Sub, consulta la guida rapida all'utilizzo della console Google Cloud. Per un'introduzione più completa, consulta Creazione di un sistema di messaggistica Pub/Sub.
Casi d'uso comuni
- Importazione di eventi di interazione con l'utente e del server. Per utilizzare gli eventi di interazione con gli utenti provenienti dalle app degli utenti finali o gli eventi del server del tuo sistema, potresti inoltrarli a Pub/Sub. Puoi quindi utilizzare uno strumento di elaborazione dello stream, come Dataflow, che invia gli eventi ai database. Alcuni esempi di questi database sono BigQuery, Bigtable e Cloud Storage. Pub/Sub ti consente di raccogliere eventi da molti client contemporaneamente.
- Distribuzione degli eventi in tempo reale. Gli eventi, non elaborati o elaborati, possono essere messi a disposizione di più applicazioni del team e dell'organizzazione per l'elaborazione in tempo reale. Pub/Sub supporta un "bus degli eventi aziendale" e modelli di progettazione di applicazioni basate su eventi. Pub/Sub ti consente di integrarti con molti sistemi che esportano gli eventi in Pub/Sub.
- Replicazione dei dati tra i database. Pub/Sub viene comunemente utilizzato per distribuire gli eventi di modifica dai database. Questi eventi possono essere utilizzati per creare una visualizzazione dello stato e della cronologia dello stato del database in BigQuery e in altri sistemi di archiviazione dei dati.
- Elaborazione e flussi di lavoro paralleli. Puoi distribuire in modo efficiente molte attività tra più worker utilizzando i messaggi Pub/Sub per comunicare con i worker. Alcuni esempi di queste attività sono la compressione di file di testo, l'invio di notifiche via email, la valutazione di modelli di AI e la riformattazione di immagini.
- Bus di eventi Enterprise. Puoi creare un bus di condivisione dei dati in tempo reale per l'intera azienda, distribuendo eventi aziendali, aggiornamenti del database ed eventi di analisi in tutta l'organizzazione.
- Streaming di dati da applicazioni, servizi o dispositivi IoT. Ad esempio, un'applicazione SaaS può pubblicare un feed in tempo reale di eventi. In alternativa, un sensore residenziale può trasmettere i dati a Pub/Sub per utilizzarli in altri prodotti Google Cloud tramite una pipeline di elaborazione dei dati.
- Aggiornamento delle cache distribuite. Ad esempio, un'applicazione può pubblicare eventi di convalida per aggiornare gli ID degli oggetti che sono stati modificati.
- Bilanciamento del carico per l'affidabilità. Ad esempio, le istanze di un servizio possono essere implementate su Compute Engine in più zone, ma iscriversi a un argomento comune. Quando il servizio non funziona in una zona, le altre possono riprendere automaticamente il carico.
Confronto tra Pub/Sub e altre tecnologie di messaggistica
Pub/Sub combina la scalabilità orizzontale di Apache Kafka e Pulsar con funzionalità presenti nel middleware di messaggistica come Apache ActiveMQ e RabbitMQ. Esempi di queste funzionalità sono le code di posta inutilizzata e i filtri.
Un'altra funzionalità adottata da Pub/Sub dal middleware di messaggistica è il parallello per messaggio, anziché la messaggistica basata su partizioni. Pub/Sub "concede in leasing" i singoli messaggi ai client sottoscrittori, quindi monitora se un determinato messaggio viene elaborato correttamente.
Al contrario, altri sistemi di messaggistica scalabili orizzontalmente utilizzano le partizioni per la scalabilità orizzontale. In questo modo, gli iscritti sono costretti a elaborare i messaggi in ogni partizione in ordine e il numero di client simultanei è limitato al numero di partizioni. L'elaborazione per messaggio massimizza il parallelismo delle applicazioni degli abbonati e contribuisce a garantire l'indipendenza di publisher e abbonati.
Confrontare la comunicazione tra servizi e la comunicazione tra servizio e cliente
Pub/Sub è progettato per la comunicazione tra servizi anziché per la comunicazione con client IoT o utente finale. Altri pattern sono supportati meglio da altri prodotti:
- Client-server. Per inviare messaggi tra un'app mobile o web e un servizio, utilizza prodotti che includono Firebase Realtime Database e Firebase Cloud Messaging.
- Chiamate di servizio asincrone. Utilizza Cloud Tasks.
Puoi utilizzare una combinazione di questi servizi per creare modelli client -> servizi -> database. Ad esempio, consulta il tutorial Streaming di messaggi Pub/Sub tramite WebSockets.
Integrazioni
Pub/Sub offre molte integrazioni con altri prodotti Google Cloud per creare un sistema di messaggistica completo:
- Elaborazione in streaming e integrazione dei dati. Supportato da Dataflow, inclusi i modelli e SQL di Dataflow, che consentono l'elaborazione e l'integrazione dei dati in BigQuery e nei data lake su Cloud Storage. I modelli Dataflow per spostare i dati da Pub/Sub a Cloud Storage, BigQuery e altri prodotti sono disponibili nelle UI di Pub/Sub e Dataflow nella console Google Cloud. È disponibile anche l'integrazione con Apache Spark, in particolare se gestita con Dataproc. La composizione visiva delle pipeline di integrazione e di elaborazione in esecuzione su Spark + Dataproc può essere eseguita con Data Fusion.
- Monitoraggio, avvisi e logging. Supportato dai prodotti Monitoring e Logging.
- Autenticazione e IAM. Pub/Sub si basa su un'autenticazione OAuth standard utilizzata da altri prodotti Google Cloud e supporta l'IAM granulare, consentendo controllo dell'accesso dell'accesso per le singole risorse.
- API. Pub/Sub utilizza tecnologie standard per le API di servizi gRPC e REST insieme a librerie client per diversi linguaggi.
- Trigger, notifiche e webhook. Pub/Sub offre la consegna dei messaggi basata su push come richieste POST HTTP ai webhook. Puoi implementare l'automazione dei flussi di lavoro utilizzando Cloud Functions o altri prodotti serverless.
- Orchestrazione. Pub/Sub può essere integrato in flussi di lavoro serverless a più passaggi in modo dichiarativo. L'orchestrazione dei big data e delle analisi viene spesso eseguita con Cloud Composer, che supporta gli attivatori Pub/Sub. Puoi anche integrare Pub/Sub con Application Integration (anteprima), una soluzione Integration-Platform-as-a-Service (iPaaS). L'Application Integration fornisce un trigger Pub/Sub per attivare o avviare le integrazioni.
- Integration Connectors(anteprima). Questi connettori ti consentono di connetterti a varie origini dati. Con i connettori, sia i servizi Google Cloud sia le applicazioni aziendali di terze parti vengono esposti alle tue integrazioni tramite un'interfaccia standard e trasparente. Per Pub/Sub, puoi creare una connessione Pub/Sub da utilizzare nelle tue integrazioni.
Passaggi successivi
- Inizia con la guida rapida su Pub/Sub.
- Leggi le nozioni di base sul servizio Pub/Sub.
- Scopri come creare un sistema di messaggistica Pub/Sub.
- Scopri i prezzi di Pub/Sub.
- Scopri le quote e i limiti per Pub/Sub.
- Leggi le note di rilascio di Pub/Sub.
- Esplora il data engineering con i servizi Google Cloud su Qwiklabs.