Che cos'è Pub/Sub?

Pub/Sub è un servizio di messaggistica asincrono e scalabile che disaccoppia i producer di servizi dai servizi che elaborano i messaggi.

Pub/Sub consente ai servizi di comunicare in modo asincrono, con latenze in genere nell'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 dei servizi o come coda per parallelizzare le attività.

Pub/Sub ti consente di creare sistemi di produttori e consumer di eventi, chiamati 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. 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 degli eventi di interazione utente e del server. Per utilizzare gli eventi di interazione degli utenti dalle app degli 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 degli eventi in tempo reale. Gli eventi, non elaborati 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 di eventi aziendali" 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 comunemente utilizzato 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 in parallelo. 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 di 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 a Pub/Sub per l'utilizzo in altri prodotti Google Cloud tramite una pipeline di trattamento dati.
  • Aggiornamento delle cache distribuite. Ad esempio, un'applicazione può pubblicare eventi di annullamento della convalida per aggiornare gli ID degli oggetti che sono stati modificati.
  • Bilanciamento del carico per l'affidabilità. Ad esempio, è possibile eseguire il deployment delle istanze di un servizio su Compute Engine in più zone, ma sottoscrivere un argomento comune. Se il servizio non funziona in una zona, le altre possono farsi carico del carico automaticamente.

Confronto tra Pub/Sub e altre tecnologie di messaggistica

Pub/Sub combina la scalabilità orizzontale di Apache Kafka e Pulsar con le funzionalità presenti nel middleware di messaggistica come Apache ActiveMQ e RabbitMQ. Esempi di queste funzionalità sono le code di messaggi non recapitabili e i filtri.

Un'altra funzionalità che Pub/Sub adotta dal middleware di messaggistica è il parallelismo per messaggio, anziché la messaggistica basata su partizioni. Pub/Sub "concede in leasing" singoli messaggi ai client sottoscrittori, quindi monitora se un determinato messaggio viene elaborato correttamente.

Al contrario, altri sistemi di messaggistica con scalabilità orizzontale 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 dei sottoscrittori e contribuisce a garantire l'indipendenza di publisher e sottoscrittori.

Confronta la comunicazione tra servizi e tra servizio e client

Pub/Sub è destinato alla comunicazione service-to-service, piuttosto che alla comunicazione con client di utenti finali 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 su WebSocket.

Integrazioni

Pub/Sub offre 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 lo spostamento dei 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 Managed Service for Apache Spark. La composizione visiva delle pipeline di integrazione ed elaborazione in esecuzione su Spark + Managed Service for 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 prodotti Google Cloud e supporta IAM granulare, consentendo controllo dell'accesso per le singole risorse.
  • API. Pub/Sub utilizza tecnologie API di servizio gRPC e REST standard insieme a 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 del flusso di lavoro utilizzando Cloud Functions o altri prodotti serverless.
  • Orchestrazione. Pub/Sub può essere integrato in modo dichiarativo in Workflows serverless in più passaggi. L'orchestrazione di big data e analisi viene spesso eseguita con Managed Airflow, che supporta i trigger Pub/Sub. Puoi anche integrare Pub/Sub con Application Integration, che è una soluzione Integration-Platform-as-a-Service (iPaaS). Application Integration fornisce un trigger Pub/Sub per attivare o avviare le integrazioni.
  • Integration Connectors. Questi connettori ti consentono di connetterti a varie origini dati. Con i connettori, sia i serviziGoogle Cloud sia le applicazioni aziendali di terze parti vengono esposti alle tue integrazioni tramite un'interfaccia standard trasparente. Per Pub/Sub, puoi creare un connettore Pub/Sub da utilizzare nelle tue integrazioni.

Passaggi successivi