Questa pagina ti aiuta a comprendere Pub/Sub, perché le aziende ne hanno bisogno e i vantaggi di Pub/Sub rispetto a tecnologie simili. Scopri anche i concetti principali di Pub/Sub, inclusi i termini argomento, publisher e sottoscrittore.
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 dell'ordine di 100 millisecondi.
Pub/Sub viene utilizzato per le pipeline di analisi dei flussi di dati e di integrazione dei dati per importare e distribuire i dati. È altrettanto efficace come middleware orientato alla messaggistica per l'integrazione dei 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 i sottoscrittori 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, consulta Creazione di un sistema di messaggistica Pub/Sub.
Casi d'uso comuni
Importazione di interazioni utente ed eventi server. Per utilizzare gli eventi di interazione con l'utente dalle app per gli utenti finali o gli eventi del 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 molti client contemporaneamente.
Distribuzione di eventi in tempo reale. Gli eventi, non elaborati o elaborati, possono essere resi disponibili per l'elaborazione in tempo reale a più applicazioni del tuo team e della tua organizzazione. Pub/Sub supporta un "bus di eventi aziendale" e modelli di progettazione di applicazioni basati su eventi. Pub/Sub ti consente di eseguire l'integrazione con molti sistemi Google che esportano eventi in Pub/Sub.
Replica dei dati tra i database. Pub/Sub è di uso comune per distribuire gli 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 e workflow paralleli. Puoi distribuire in modo efficiente molte attività tra più worker utilizzando i messaggi Pub/Sub per connetterti a Cloud Run Functions. Esempi di queste attività sono la compressione di file di testo, l'invio di notifiche via email, la valutazione di modelli AI e la riformattazione di immagini.
Bus di eventi aziendale. Puoi creare un bus di condivisione dei dati in tempo reale a livello aziendale, distribuendo eventi di business, aggiornamenti dei database ed eventi di analisi in tutta l'organizzazione.
Flusso 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 Google Cloud prodotti tramite una pipeline Dataflow.
Aggiornamento delle cache distribuite. Ad esempio, un'applicazione può pubblicare eventi di invalidazione per aggiornare gli ID degli oggetti modificati.
Bilanciamento del carico per l'affidabilità. Ad esempio, le istanze di un servizio possono essere eseguite nel deployment su Compute Engine in più zone, ma sottoscrivere un argomento comune. Quando il servizio non funziona in una zona, le altre possono gestire automaticamente il carico.
Tipi di servizi Pub/Sub
Pub/Sub è composto da due servizi:
Servizio Pub/Sub. Questo servizio di messaggistica è la scelta predefinita per la maggior parte degli utenti e delle applicazioni. Offre la massima affidabilità e il più ampio set di integrazioni, oltre alla gestione automatica della capacità. Pub/Sub garantisce la replica sincrona di tutti i dati in almeno due zone e la replica con il massimo impegno in una terza zona aggiuntiva.
Servizio Pub/Sub Lite. Un servizio di messaggistica separato ma simile, creato per ridurre i costi. Offre un'affidabilità inferiore rispetto a Pub/Sub. Offre l'archiviazione degli argomenti a livello di zona o di regione. Gli argomenti Lite a livello di zona vengono archiviati in una sola zona. Gli argomenti Lite a livello di regione replicano i dati in una seconda zona in modo asincrono. Inoltre, Pub/Sub Lite richiede il provisioning e la gestione anticipati della capacità di archiviazione e di throughput. Prendi in considerazione Pub/Sub Lite solo per le applicazioni in cui il raggiungimento di un costo ridotto giustifica un lavoro operativo aggiuntivo e un'affidabilità inferiore.
Per ulteriori dettagli sulle differenze tra Pub/Sub e Pub/Sub Lite, consulta Scegliere tra Pub/Sub e Pub/Sub Lite.
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 tradizionale 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 "noleggia" i singoli messaggi ai client sottoscrittori, quindi tiene traccia se un determinato messaggio viene elaborato correttamente.
Al contrario, altri sistemi di messaggistica scalabili orizzontalmente utilizzano le partizioni per la scalabilità orizzontale. Ciò costringe i sottoscrittori a elaborare i messaggi in ogni partizione in ordine e limita il numero di client simultanei al numero di partizioni. L'elaborazione per messaggio massimizza il parallelismo delle applicazioni sottoscrittrici e contribuisce a garantire l'indipendenza tra publisher e sottoscrittori.
Confronto tra la comunicazione da servizio a servizio e da servizio a client
Pub/Sub è destinato alla comunicazione da servizio a servizio anziché alla comunicazione con i client utente finale o IoT. Altri pattern sono supportati meglio da altri prodotti:
- Client-server. Per inviare messaggi tra un'app mobile/web e un servizio, utilizza i 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 pattern client -> servizi -> database. Ad esempio, consulta il tutorial Trasmettere messaggi Pub/Sub in streaming tramite WebSocket.
Integrazioni
Pub/Sub ha molte integrazioni con altri Google Cloud prodotti per creare un sistema di messaggistica completo:
- Elaborazione dei flussi e integrazione dei dati. Supportato da Dataflow, inclusi i modelli Dataflow templates e SQL, 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 Google Cloud console. È disponibile anche l'integrazione con Apache Spark, in particolare quando viene gestito con Managed Service per Apache Spark. La composizione visiva delle pipeline di integrazione ed elaborazione in esecuzione su Spark + Managed Service per Apache Spark 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 Google Cloud prodotti 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, oltre alle librerie client per diversi linguaggi.
- Trigger, notifiche e webhook. Pub/Sub offre la distribuzione dei messaggi basata su push come richieste POST HTTP ai webhook. Puoi implementare l'automazione dei workflow 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), 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 consentono di connetterti a varie origini dati. Con i connettori, sia Google Cloud servizi sia le applicazioni aziendali di terze parti vengono esposti alle tue integrazioni tramite un'interfaccia standard trasparente. Per Pub/Sub, puoi creare una connessione Pub/Sub da utilizzare nelle tue integrazioni.
Concetti principali
- Argomento. Una risorsa denominata a cui i publisher inviano i messaggi.
- Sottoscrizione. Una risorsa denominata che rappresenta il flusso di messaggi da un singolo argomento specifico, da inviare all'applicazione sottoscrittrice. Per ulteriori dettagli sulle sottoscrizioni e sulla semantica di consegna dei messaggi, consulta la Guida per i sottoscrittori.
- Messaggio. La combinazione di dati e attributi (facoltativi) che un publisher invia a un argomento e che viene infine inviata ai sottoscrittori.
- Attributo del messaggio. Una coppia chiave-valore che un publisher può definire per un messaggio. Ad esempio, la chiave
iana.org/language_tage il valoreenpotrebbero essere aggiunti ai messaggi per contrassegnarli come leggibili da un sottoscrittore di lingua inglese. - Publisher. Un'applicazione che crea e invia messaggi a uno o più argomenti.
- Sottoscrittore. Un'applicazione con una sottoscrizione a uno o più argomenti da cui ricevere i messaggi.
- Conferma (o "ack"). Un segnale inviato da un sottoscrittore a Pub/Sub dopo aver ricevuto correttamente un messaggio. I messaggi confermati vengono rimossi dalla coda dei messaggi della sottoscrizione.
- Push e pull. I due metodi di consegna dei messaggi. Un sottoscrittore riceve i messaggi tramite Pub/Sub che li invia all'endpoint scelto dal sottoscrittore oppure il sottoscrittore li estrae dal servizio.
Le relazioni tra publisher e sottoscrittori possono essere one-to-many (fan-out), many-to-one (fan-in) e many-to-many, come mostrato nel seguente diagramma:
Il seguente diagramma illustra il passaggio di un messaggio da un publisher a un sottoscrittore. Per la consegna push, la conferma è implicita nella risposta alla richiesta push, mentre per la consegna pull è necessaria una RPC separata.
Passaggi successivi
- Inizia a utilizzare la guida rapida di Pub/Sub o la guida rapida di Pub/Sub Lite o.
- Leggi la panoramica dell'architettura di Pub/Sub.
- Scopri come creare un sistema di messaggistica Pub/Sub.
- Scopri i prezzi di Pub/Sub pricing.
- Scopri le quote e i limiti per Pub/Sub e Pub/Sub Lite.
- Leggi le note di rilascio di Pub/Sub .
- Esplora l'ingegneria dei dati con Google Cloud i servizi su Qwiklabs.