Che cosa sono Pub/Sub e Pub/Sub Lite?

Questa pagina ti aiuta a capire Pub/Sub, perché le aziende richiedono Pub/Sub e i vantaggi di Pub/Sub rispetto a tecnologie simili. Inoltre, scopri i concetti principali di Pub/Sub che includono 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 nell'ordine dei 100 ms.

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

Pub/Sub consente di creare sistemi di producer e consumer di eventi, chiamati publisher e abbonati. I publisher comunicano con i sottoscrittori in modo asincrono trasmettendo eventi, anziché tramite chiamate di procedura remota (RPC).

I publisher inviano eventi al servizio Pub/Sub senza tenere conto di come o quando questi eventi devono essere elaborati. Pub/Sub consegna quindi gli eventi a tutti i servizi che reagiscono a questi eventi. 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 nel suo complesso.

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

  • Interazione degli utenti di importazione ed eventi del server. Per utilizzare gli eventi di interazione dell'utente da app degli utenti finali o eventi del server del tuo sistema, puoi inoltrarli a Pub/Sub. Puoi quindi usare uno strumento di elaborazione dei flussi, come Dataflow, che invia gli eventi ai database. Esempi di database di questo tipo sono BigQuery, Bigtable e Cloud Storage. Pub/Sub consente di raccogliere eventi da più client contemporaneamente.

  • Distribuzione degli eventi in tempo reale. Gli eventi, non elaborati o elaborati, possono essere resi disponibili a più applicazioni del team e dell'organizzazione per l'elaborazione in tempo reale. Pub/Sub supporta un "bus di eventi aziendali" e pattern di progettazione di applicazioni basati su eventi. Pub/Sub consente l'integrazione con molti sistemi Google che esportano eventi in Pub/Sub.

  • Replica dei dati tra i database. Pub/Sub viene usato spesso per distribuire eventi di modifica dai database. Questi eventi possono essere utilizzati per creare 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 a Cloud Functions. Esempi di queste attività sono la compressione dei file di testo, l'invio di notifiche via email, la valutazione dei modelli di AI e la riformattazione delle immagini.

  • Autobus per eventi aziendali. Puoi creare un bus per la condivisione di dati in tempo reale a livello aziendale distribuendo eventi aziendali, aggiornamenti del database ed eventi di analisi in tutta l'organizzazione.

  • Flusso 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ò inviare dati in modalità flusso a Pub/Sub per utilizzarli in altri prodotti Google Cloud tramite una pipeline Dataflow.

  • Aggiorna 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, sottoscrivendo poi la sottoscrizione a un argomento comune. In caso di errore del servizio in una zona, gli altri possono prelevare il carico automaticamente.

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 il massimo livello di affidabilità e il più ampio set 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 "best effort" in una terza zona aggiuntiva.

  • Servizio Pub/Sub Lite. Un servizio di messaggistica separato, ma simile, creato a costi inferiori. Offre un'affidabilità inferiore rispetto a Pub/Sub. Offre l'archiviazione per argomenti a livello di zona o di regione. Gli argomenti Lite a livello di zona vengono archiviati in una sola zona. Gli argomenti Lite a livello di regione 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. Prendi in considerazione Pub/Sub Lite solo per le applicazioni in cui il raggiungimento di costi ridotti giustifica un certo lavoro operativo aggiuntivo e una minore affidabilità.

Per ulteriori dettagli sulle differenze tra Pub/Sub e Pub/Sub Lite, consulta Scegliere 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 le funzionalità presenti nel middleware di messaggistica tradizionale come Apache ActiveMQ e RabbitMQ. Esempi di tali 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 sulle partizioni. Pub/Sub "esegue in leasing" singoli messaggi ai client del sottoscrittore, quindi monitora se un determinato messaggio viene elaborato correttamente.

Al contrario, altri sistemi di messaggistica scalabili orizzontalmente usano le partizioni. In questo modo i sottoscrittori devono elaborare i messaggi in ogni partizione in ordine e limitare 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 del publisher/sottoscrittore.

Confrontare la comunicazione tra servizi e tra servizi

Pub/Sub è pensato per la comunicazione da servizio a servizio, non con client IoT o utenti finali. Altri modelli sono supportati meglio da altri prodotti:

Puoi utilizzare una combinazione di questi servizi per creare pattern per client -> servizi -> database. Ad esempio, vedi il tutorial Streaming di messaggi Pub/Sub su WebSocket.

Integrazioni

Pub/Sub ha molte integrazioni con altri prodotti Google Cloud per creare un sistema di messaggistica con funzionalità complete:

  • 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 nei data lake su Cloud Storage. I modelli di Dataflow per lo spostamento di 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 ed elaborazione in esecuzione su Spark + Dataproc può essere ottenuta 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 dell'accesso per singole risorse.
  • API. Pub/Sub utilizza tecnologie API di servizio gRPC e REST standard insieme alle librerie client per diversi linguaggi.
  • Attivatori, notifiche e webhook. Pub/Sub offre la consegna basata su 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 modo dichiarativo in flussi di lavoro serverless in più passaggi. Orchestrazione di big data e analitica spesso eseguita con Cloud Composer, che supporta i trigger di Pub/Sub. Puoi anche integrare Pub/Sub con Application Integration (anteprima), che è una soluzione iPaaS (Integration-Platform-as-a-Service). Application Integration fornisce un trigger Pub/Sub per attivare o avviare le integrazioni.
  • Integration Connectors (Connettori di integrazione) (anteprima) Questi connectors 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 integrazioni.

Concetti principali

  • Argomento. Una risorsa con nome a cui i publisher vengono inviati i messaggi.
  • Abbonamento. Una risorsa denominata che rappresenta il flusso di messaggi da un singolo argomento specifico da consegnare all'applicazione di sottoscrizione. Per ulteriori dettagli sulle sottoscrizioni e sulla semantica della consegna dei messaggi, consulta la Guida per i sottoscrittori.
  • Messaggio. La combinazione di dati e attributi (facoltativi) che un publisher invia a un argomento e che alla fine viene pubblicata ai sottoscrittori.
  • Attributo del 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 sottoscrittore di lingua inglese.
  • Editore. Un'applicazione che crea e invia messaggi a uno o più argomenti.
  • Iscritto. Un'applicazione con una sottoscrizione a uno o più argomenti per riceverne i messaggi.
  • Conferma (o "ack"). Segnale inviato da un sottoscrittore a Pub/Sub dopo aver ricevuto correttamente un messaggio. I messaggi confermati vengono rimossi dalla coda dei messaggi di sottoscrizione.
  • Spingi e tira. I due metodi di consegna dei messaggi. Un sottoscrittore riceve i messaggi tramite Pub/Sub push all'endpoint scelto dal sottoscrittore o dal sottoscrittore pullandoli 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 illustrato nel seguente diagramma:

Relazioni publisher-iscritti

Il seguente diagramma illustra il passaggio di un messaggio da un editore a un sottoscrittore. Per la consegna push, l'accettazione è implicita nella risposta alla richiesta push, mentre per la consegna pull richiede una RPC separata.

Ciclo di vita dei messaggi

Passaggi successivi