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 dell'ordine di 100 millisecondi.

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

Pub/Sub ti consente di creare sistemi di produttori e consumer di eventi, chiamati publisher e sottoscritti. Gli editori comunicano con i sottoscrittori in modo asincrono trasmettendo eventi, anziché tramite chiamate di procedura remota sincrona (RPC).

Gli editori inviano eventi al servizio Pub/Sub, indipendentemente da come o quando devono essere elaborati. Pub/Sub fornisce quindi gli eventi a tutti i servizi che li rispondono. Nei sistemi che comunicano tramite RPC, i publisher devono attendere che gli abbonati ricevano i dati. Tuttavia, l'integrazione asincrona in Pub/Sub aumenta la flessibilità e la robustezza dell'intero sistema.

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 dell'interazione utente e degli eventi del server. Per utilizzare gli eventi di interazione utente provenienti dalle app degli utenti finali o dagli eventi del server dal tuo sistema, puoi inoltrarli a Pub/Sub. Puoi quindi utilizzare uno strumento di elaborazione dei flussi per inviare gli eventi ai database. Pub/Sub consente di raccogliere eventi da più client contemporaneamente.
  • Distribuzione degli eventi in tempo reale. Gli eventi, non elaborati o elaborati, possono essere messi a disposizione di più applicazioni del tuo team e della tua organizzazione per l'elaborazione in tempo reale. Pub/Sub supporta un "bus di eventi aziendali" e pattern di progettazione delle applicazioni basati su eventi. Pub/Sub ti consente l'integrazione con molti sistemi che esportano eventi in Pub/Sub.
  • Replica di dati tra 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 e della cronologia dello stato del database in BigQuery e in altri sistemi di archiviazione dei dati.
  • Elaborazione in parallelo e flussi di lavoro. 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 dei modelli di AI e la riformattazione delle immagini.
  • Bus eventi aziendali. Puoi creare un bus di condivisione dei dati in tempo reale a livello aziendale per distribuire eventi aziendali, aggiornamenti del database ed eventi di analisi in tutta l'organizzazione.
  • Flussi 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 utilizzarli in altri prodotti Google Cloud attraverso una pipeline di elaborazione dati.
  • Aggiornare le cache distribuite. Ad esempio, un'applicazione può pubblicare eventi di invalidazione 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. Quando il servizio non funziona in una zona, gli altri possono prelevare il carico automaticamente.

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 tali funzionalità sono le code ai 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 sulle partizioni. Pub/Sub "lease" singoli messaggi ai client sottoscrittori, quindi monitora se un determinato messaggio è stato elaborato correttamente.

Al contrario, altri sistemi di messaggistica con scalabilità orizzontale usano le partizioni per la scalabilità orizzontale. Questo obbliga i sottoscrittori a elaborare in ordine i messaggi in ogni partizione e limita il numero di client simultanei al numero di partizioni. L'elaborazione per messaggio massimizza il parallelismo delle applicazioni degli abbonati e contribuisce a garantire l'indipendenza di publisher e sottoscrittore.

Passaggi successivi