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 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 parallelizzare le attività.
Pub/Sub ti consente di creare sistemi di produttori e consumer di eventi, denominati publisher e sottoscrittori. 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 a essi. 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 Google Cloud console. Per un'introduzione più completa, vedi Creazione di un sistema di messaggistica Pub/Sub.
Casi d'uso comuni
- Importazione di eventi server e di interazione con l'utente. Per utilizzare gli eventi di interazione utente dalle app per utenti finali o gli eventi server dal tuo sistema, puoi inoltrarli a Pub/Sub. Puoi quindi utilizzare uno strumento di elaborazione dei flussi, come Dataflow, che invia gli eventi ai database. Esempi di questi database sono BigQuery, Bigtable e Cloud Storage. Pub/Sub ti consente di raccogliere eventi da più client contemporaneamente.
- Distribuzione di eventi in tempo reale. Gli eventi, grezzi o elaborati, possono essere resi disponibili a più applicazioni nel tuo team e nella tua organizzazione per l'elaborazione in tempo reale. Pub/Sub supporta un "bus degli eventi aziendale" e pattern di progettazione di applicazioni basate su eventi. Pub/Sub ti consente di integrarti con molti sistemi che esportano eventi in Pub/Sub.
- Replica dei dati tra i database. Pub/Sub viene comunemente utilizzato per distribuire eventi di modifica dai database. Questi eventi possono essere utilizzati per creare una visualizzazione dello stato del database e della cronologia dello stato in BigQuery e in altri sistemi di archiviazione dei dati.
- Elaborazione parallela e flussi di lavoro. 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 email, la valutazione di modelli di AI e la riformattazione delle immagini.
- Enterprise Event Bus. Puoi creare un bus di condivisione dei dati in tempo reale a livello aziendale, 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 di eventi in tempo reale. In alternativa, un sensore residenziale può trasmettere dati in streaming a Pub/Sub per l'utilizzo in altri prodotti Google Cloud tramite una pipeline di elaborazione dei dati.
- Aggiornamento delle cache distribuite. Ad esempio, un'applicazione può pubblicare eventi di invalidazione 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 sottoscrivere un argomento comune. Quando il servizio non funziona in una zona, le altre possono riprendere il carico automaticamente.
Confronto tra Pub/Sub e altre tecnologie di messaggistica
Pub/Sub combina la scalabilità orizzontale di Apache Kafka e Pulsar con funzionalità presenti in middleware di messaggistica come Apache ActiveMQ e RabbitMQ. Esempi di queste funzionalità sono le code di messaggi non recapitabili e il filtraggio.
Un'altra funzionalità che Pub/Sub adotta dal middleware di messaggistica è il parallelismo per messaggio, anziché la messaggistica basata su partizioni. Pub/Sub "affitta" 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 abbonati sono costretti a elaborare i messaggi in ogni partizione in ordine e il numero di client concorrenti è limitato al numero di partizioni. L'elaborazione per messaggio massimizza il parallelismo delle applicazioni di sottoscrizione e contribuisce a garantire l'indipendenza di publisher e sottoscrittori.
Confrontare la comunicazione da servizio a servizio e da servizio a client
Pub/Sub è destinato alla comunicazione service-to-service piuttosto che alla comunicazione con client IoT o utenti finali. 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 assistenza asincrone. Utilizza Cloud Tasks.
Puoi utilizzare una combinazione di questi servizi per creare pattern client -> servizi -> database. Ad esempio, vedi il tutorial Streaming di messaggi Pub/Sub tramite WebSocket.
Integrazioni
Pub/Sub ha molte integrazioni con altri prodotti Google Cloud per creare un sistema di messaggistica completo:
- Elaborazione dei flussi 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 consoleGoogle Cloud . È disponibile anche l'integrazione con Apache Spark, in particolare se gestito 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 IAM granulare, consentendo controllo dell'accesso per le singole risorse.
- API. Pub/Sub utilizza le tecnologie API di servizio gRPC e REST standard, nonché le librerie client per diversi linguaggi.
- Trigger, notifiche e webhook. Pub/Sub offre la distribuzione basata sul push dei messaggi come richieste POST HTTP ai webhook. Puoi implementare l'automazione del flusso di lavoro utilizzando Cloud Functions o altri prodotti serverless.
- Orchestrazione. Pub/Sub può essere integrato in Workflows serverless in più passaggi in modo dichiarativo. L'orchestrazione di big data e analisi viene spesso eseguita con Cloud Composer, che supporta i trigger Pub/Sub. Puoi anche integrare Pub/Sub con Application Integration (anteprima), che è una soluzione integration Platform-as-a-Service (iPaaS). 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 che le applicazioni aziendali di terze parti sono esposti alle tue integrazioni tramite un'interfaccia standard trasparente. Per Pub/Sub, puoi creare una connessione da utilizzare nelle tue integrazioni.
Passaggi successivi
- Inizia a utilizzare la guida rapida di Pub/Sub.
- Leggi le nozioni di base sul servizio Pub/Sub.
- Scopri come creare un sistema di messaggistica Pub/Sub.
- Informazioni sui prezzi di Pub/Sub.
- Comprendere quote e limiti per Pub/Sub.
- Leggi le note di rilascio di Pub/Sub.
- Esplora l'ingegneria dei dati con i servizi Google Cloud su Qwiklabs.