Che cos'è Pub/Sub?

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 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 eventi devono essere elaborati. Pub/Sub poi invia gli eventi a tutti i servizi che reagiscono a questi eventi. 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 eventi di interazione utente e server. Per utilizzare gli eventi di interazione 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 a più applicazioni del tuo team e della tua organizzazione per l'elaborazione in tempo reale. Pub/Sub supporta un "bus di eventi aziendale" e pattern di progettazione di applicazioni basate su eventi. Pub/Sub ti consente di eseguire l'integrazione con molti sistemi che esportano eventi in Pub/Sub.
  • Replica dei dati tra i database. Pub/Sub viene 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 degli stati 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 comunicare con i worker. 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 delle immagini.
  • Bus di eventi aziendale. Puoi creare un bus di condivisione dei dati in tempo reale a livello aziendale distribuendo eventi aziendali, aggiornamenti dei 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 Google Cloud prodotti tramite una pipeline di elaborazione dei dati.
  • Aggiornamento delle cache distribuite. Ad esempio, un'applicazione può pubblicare eventi di invalidamento per aggiornare gli ID degli oggetti modificati.
  • Bilanciamento del carico per l'affidabilità. Ad esempio, le istanze di un servizio possono essere sottoposte a deployment su Compute Engine in più zone, ma sottoscrivere a un argomento comune. Se il servizio non funziona in una zona, le altre possono gestire 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 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 verifica 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, i sottoscrittori 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 sottoscrittrici e contribuisce a garantire l'indipendenza di 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:

Puoi utilizzare una combinazione di questi servizi per creare pattern client -> servizi -> database. Ad esempio, consulta il tutorial Streaming di messaggi Pub/Sub 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, che consente 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 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 provides a 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 Pub/Sub da utilizzare nelle tue integrazioni.

Passaggi successivi