Che cos'è Pub/Sub e Pub/Sub Lite?

Questa pagina ti aiuta a comprendere Pub/Sub, perché le aziende richiedono Pub/Sub e i vantaggi di Pub/Sub rispetto a tecnologie simili. Scopri inoltre i concetti di base di Pub/Sub, tra cui 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 di servizi o come coda per il parallelismo delle attività.

Pub/Sub ti consente di creare sistemi di produttori e consumer di eventi, denominati 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 l'utente 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. 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 Google che esportano eventi in Pub/Sub.

  • Replicazione dei dati tra i database. Pub/Sub viene comunemente utilizzato per distribuire eventi di modifica dai database. Questi eventi possono essere utilizzati per costruire una vista 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 connetterti alle funzioni Cloud Run. 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 in streaming a Pub/Sub per utilizzarli in altri prodotti Google Cloud tramite una pipeline Dataflow.

  • 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 eseguite su Compute Engine in più zone, ma sottoscrivere un argomento comune. Quando il servizio non funziona in una zona, le altre possono assumere automaticamente il carico.

Tipi di servizi Pub/Sub

Pub/Sub è costituito 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 insieme 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 secondo il criterio del massimo impegno in una terza zona aggiuntiva.

  • Servizio Pub/Sub Lite. Un servizio di messaggistica distinto, ma simile, creato a un costo inferiore. Offre un'affidabilità inferiore rispetto a Pub/Sub. Offre spazio di archiviazione per argomenti a livello di zona o di regione. Gli argomenti Lite a livello di zona vengono archiviati in un'unica zona. Gli argomenti Lite regionali replicano i dati in modo asincrono in una seconda zona. Inoltre, Pub/Sub Lite richiede di eseguire il pre-provisioning e gestire la capacità di archiviazione e di throughput. Valuta la possibilità di utilizzare Pub/Sub Lite solo per le applicazioni in cui un costo ridotto giustifica un'attività operativa aggiuntiva e una minore affidabilità.

Per ulteriori dettagli sulle differenze tra Pub/Sub e Pub/Sub Lite, consulta Scegliere tra Pub/Sub o 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 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/abbonati.

Confronta la comunicazione tra servizi e 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:

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'integrazione di applicazioni 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.

Concetti principali

  • Argomento. Una risorsa denominata a cui i publisher inviano i messaggi.
  • Subscription (Abbonamento). Una risorsa denominata che rappresenta lo stream di messaggi di un singolo argomento specifico da inviare all'applicazione del sottoscrittore. Per maggiori dettagli sulle iscrizioni e sulla semantica di recapito dei messaggi, consulta la Guida per gli abbonati.
  • Messaggio. La combinazione di dati e attributi (facoltativi) che un editore invia a un argomento e che viene infine recapitata ai sottoscrittori.
  • Attributo messaggio. Una coppia chiave-valore che un publisher può definire per un messaggio. Ad esempio, la chiave iana.org/language_tag e il valore en potrebbero essere aggiunti ai messaggi per contrassegnarli come leggibili da un abbonato di lingua inglese.
  • Editore. Un'applicazione che crea e invia messaggi a uno o più argomenti.
  • Abbonato. Un'applicazione con una sottoscrizione a uno o più argomenti per ricevere messaggi.
  • Acknowledgment (o "ack"). Un indicatore inviato da un sottoscrittore a Pub/Sub dopo aver ricevuto un messaggio. I messaggi confermati vengono rimossi dalla coda dei messaggi di sottoscrizione.
  • Push e pull. I due metodi di recapito dei messaggi. Un sottoscrittore riceve i messaggi tramite il push di Pub/Sub all'endpoint scelto dall'abbonato o tramite il pull del servizio.

Le relazioni tra publisher e sottoscrittori possono essere una-a-molti (a ventaglio), molte-a-uno (a imbuto) e molte-a-molti, come mostrato nel seguente diagramma:

Rapporti tra publisher e abbonati

Il seguente diagramma illustra come un messaggio passa da un publisher a un sottoscrittore. Per l'invio push, il riconoscimento è implicito nella risposta alla richiesta push, mentre per l'invio pull è necessaria una RPC separata.

Ciclo di vita dei messaggi

Passaggi successivi