Che cos'è Pub/Sub?

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

Pub/Sub consente ai servizi di comunicare in modo asincrono, con latenza dell'ordine di 100 millisecondi.

Pub/Sub viene utilizzato per la pipeline di analisi e streaming di dati per importare e distribuire dati. È altrettanto efficace come middleware orientato alla messaggistica per l'integrazione dei servizi o come coda per caricare in contemporanea le attività.

Pub/Sub consente di creare sistemi di produttori e consumatori di eventi, chiamati publisher e iscritti. Gli editori comunicano con gli abbonati in modo asincrono trasmettendo gli eventi, anziché tramite chiamate di procedura remota (RPC) sincrone.

I publisher inviano eventi al servizio Pub/Sub, indipendentemente da come o quando devono essere elaborati. Pub/Sub distribuisce gli eventi a tutti i servizi che rispondono. Nei sistemi che comunicano tramite RPC, gli editori devono attendere che i sottoscrittori ricevano i dati. Tuttavia, l'integrazione asincrona in Pub/Sub aumenta la flessibilità e la robustezza del sistema in generale.

Per iniziare a utilizzare Pub/Sub, consulta la Guida rapida all'utilizzo di Google Cloud Console. Per un'introduzione più completa, consulta la sezione Creazione di un sistema di messaggistica Pub/Sub.

Casi d'uso comuni

  • Importazione dell'interazione dell'utente ed eventi del server. Per utilizzare gli eventi di interazione utente delle app utente finale o degli eventi server dal tuo sistema, puoi inoltrarli a Pub/Sub. Puoi quindi utilizzare uno strumento di elaborazione dei flussi, come Dataflow, che fornisce gli eventi ai database. Esempi di tali database sono BigQuery, Cloud 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 team e nell'organizzazione per l'elaborazione in tempo reale. Pub/Sub supporta un bus aziendale per eventi e pattern di progettazione di applicazioni basati su eventi. Pub/Sub ti consente l'integrazione con molti sistemi Google 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 degli stati in BigQuery e in altri sistemi di archiviazione dati.

  • Elaborazione e flussi di lavoro paralleli. Puoi distribuire in modo efficiente molte attività tra più worker utilizzando i messaggi Pub/Sub per connetterti a Cloud Functions. 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.

  • Autobus aziendale per le aziende. Puoi creare un autobus per la condivisione dei dati in tempo reale a livello aziendale, distribuendo eventi aziendali, aggiornamenti di 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. Oppure, un sensore residenziale può trasmettere flussi di dati a Pub/Sub per l'utilizzo in altri prodotti Google Cloud tramite una pipeline Dataflow.

  • 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 di istanze di un servizio su Compute Engine in più zone, ma iscriversi a un argomento comune. Quando il servizio non riesce in una zona, gli altri possono rilevare automaticamente il carico.

Tipi di servizi Pub/Sub

Pub/Sub consiste di 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 la più ampia serie di integrazioni, oltre a una gestione automatica della capacità. Pub/Sub garantisce la replica sincrona di tutti i dati ad almeno due zone e la replica migliore possibile a una terza zona aggiuntiva.

  • Servizio Pub/Sub Lite. Un servizio di messaggistica separato ma simile creato per un costo inferiore. Offre un'affidabilità inferiore rispetto a Pub/Sub. Offre archiviazione per argomenti a livello di zona o di area geografica. Gli argomenti Lite a livello di zona sono archiviati in una sola zona. Gli argomenti Lite a livello di area geografica replicano i dati in una seconda zona in modo asincrono. Inoltre, Pub/Sub Lite richiede il pre-provisioning e la gestione della capacità di archiviazione e velocità effettiva. Considera Pub/Sub Lite solo per le applicazioni in cui raggiungere un costo ridotto giustifica un lavoro operativo aggiuntivo 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 nei middleware di messaggistica tradizionale come Apache ActiveMQ e RabbitMQ. Alcuni esempi di queste funzionalità sono le code messaggi non recapitabili e i filtri.

Un'altra funzionalità adottata da Pub/Sub per il middleware di messaggistica è il parallelismo per messaggio, anziché la messaggistica basata su partizioni. Pub/Sub " leasing" singoli messaggi ai client sottoscrittori, quindi monitora se un dato messaggio è stato elaborato correttamente.

Al contrario, altri sistemi di messaggistica a scalabilità orizzontale utilizzano le partizioni per la scalabilità orizzontale. Questo obbliga i sottoscrittori a elaborare i messaggi in ciascuna partizione in ordine e limita il numero di client simultanei al numero di partizioni. L'elaborazione per messaggio massimizza il parallelismo delle applicazioni dell'iscritto e aiuta a garantire l'indipendenza dell'editore/dell'abbonato.

Confrontare la comunicazione tra servizi e servizi

Pub/Sub è destinato alla comunicazione da servizio a servizio invece che da comunicazione con client utente finale o IoT. Altri pattern sono supportati meglio da altri prodotti:

Puoi utilizzare una combinazione di questi servizi per creare pattern di database client -> servizi ->. 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 di Dataflow e SQL, che consentono l'elaborazione e l'integrazione dei dati in BigQuery e i data lake su Cloud Storage. I modelli Dataflow per lo spostamento di dati da Pub/Sub a Cloud Storage, BigQuery e altri prodotti sono disponibili nelle interfacce utente 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 ed 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, abilitando il controllo dell'accesso per le singole risorse.
  • API. Pub/Sub utilizza le tecnologie API di servizio REST e gRPC insieme a librerie client per diversi linguaggi.
  • Attivatori, notifiche e webhook. Pub/Sub offre la consegna 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 modalità multi-flow serverless Workflows. Orchestrazione di big data e analisi spesso eseguita con Cloud Composer, che supporta gli attivatori Pub/Sub.

Concetti fondamentali

  • Argomento. Una risorsa denominata a cui i messaggi vengono inviati dai publisher.
  • Abbonamento. Una risorsa denominata che rappresenta il flusso di messaggi da un singolo argomento specifico da consegnare all'applicazione di iscrizione. Per maggiori dettagli sulla semantica delle sottoscrizioni e dei messaggi, consulta la Guida per gli abbonati.
  • Messaggio. La combinazione di dati e attributi (facoltativi) inviati da un publisher a un argomento e che infine vengono inviati agli abbonati.
  • Attributo messaggio. Una coppia chiave-valore che un publisher può definire per un messaggio. Ad esempio, è possibile aggiungere la chiave iana.org/language_tag e il valore en ai messaggi per contrassegnarli come leggibili da un utente di lingua inglese.
  • Publisher. 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 i relativi messaggi.
  • Conferma (o "eccesso"). Un indicatore inviato da un sottoscrittore a Pub/Sub dopo aver ricevuto correttamente un messaggio. I messaggi confermati vengono rimossi dalla coda dei messaggi della sottoscrizione.
  • Spingi e tira. I due metodi di recapito dei messaggi. Un abbonato riceve i messaggi da Pub/Sub inviandoli all'endpoint scelto dall'abbonato o dall'abbonato che li estrae dal servizio.

Le relazioni tra publisher e iscritti possono essere one-to-many (fan-out),many-to-one (fan-in) e many-to-many, come mostrato nel diagramma seguente:

Relazioni editore-abbonato

Il seguente diagramma illustra come un messaggio passa da un editore a un abbonato. Per la distribuzione push, il riconoscimento è implicito nella risposta alla richiesta push, mentre per la distribuzione pull richiede un RPC separato.

Ciclo di vita di un messaggio

Passaggi successivi