Che cosa sono 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, di latenza nell'ordine dei 100 ms.

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 middleware orientato alla messaggistica per l'integrazione di servizi o come coda per caricare in contemporanea le 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é chiamate RPC (remote procedure remote) sincrone.

I publisher inviano eventi al servizio Pub/Sub, senza tenere conto come e quando questi eventi devono essere elaborati. Pub/Sub poi invia gli eventi a tutti i servizi che reagiscono. Nei sistemi, che comunicano tramite RPC, i publisher devono attendere che i sottoscrittori 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, vedi 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 con gli utenti provenienti dalle app degli utenti finali o gli eventi del server del tuo sistema, puoi 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 di archiviazione ideale in Cloud Storage. Pub/Sub consente di raccogliere eventi da molti 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 è comunemente usato per distribuire gli 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. Esempi di queste attività sono la compressione del testo di file, invio di notifiche via email, valutazione di modelli di AI e riformattazione in formato Docker.

  • Autobus per eventi aziendali. 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.

  • Flusso 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 distribuite su Compute Engine in più zone, ma che sottoscrivono un argomento comune. In caso di errore del servizio in una zona, gli altri possono prendere il carico. automaticamente.

Tipi di servizi Pub/Sub

Pub/Sub è costituito da due servizi:

  • Servizio Pub/Sub. Questo servizio di messaggistica è l'impostazione predefinita per la maggior parte degli utenti e delle applicazioni. Offre i massimi livelli di affidabilità più ampio insieme di integrazioni, oltre alla gestione automatica della capacità. Pub/Sub garantisce la replica sincrona di tutti i dati almeno due zone e replica con il criterio del "best effort" in una terza zona aggiuntiva.

  • Servizio Pub/Sub Lite. Un messaggio separato ma simile a un costo inferiore. 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 un'unica zona. Gli argomenti Lite a livello di regione replicano i dati in un secondo 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 costi ridotti giustificano alcune attività operative aggiuntive e l'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 Apache Kafka e Pulsar con 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 è parallelismo per messaggio, anziché messaggistica basata sulle 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. Questo obbliga gli iscritti per elaborare i messaggi in ogni partizione in ordine e limita il numero di al numero di partizioni. L'elaborazione per messaggio massimizza il parallelismo delle applicazioni degli abbonati e contribuisce a garantire l'indipendenza di publisher/abbonati.

Confrontare la comunicazione tra servizi e tra servizi

Pub/Sub è destinato alla comunicazione tra servizi rispetto alla comunicazione con gli utenti finali o client IoT. Altri pattern sono supportati meglio da altri prodotti:

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

Integrazioni

Pub/Sub ha molte integrazioni con altri prodotti Google Cloud per creare un ambiente sistema di messaggistica in primo piano:

  • Elaborazione in streaming e integrazione dei dati. Supportato da Dataflow, inclusi i modelli Dataflow e SQL, che consentono l'elaborazione e 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 da Monitoring e Logging di prodotti.
  • Autenticazione e IAM. Pub/Sub si basa su un protocollo OAuth standard utilizzata da altri prodotti Google Cloud e supporta IAM granulari, abilitare il controllo dell'accesso per le singole risorse.
  • API. Pub/Sub utilizza tecnologie standard delle API di servizio gRPC e REST insieme a librerie client per diversi linguaggi.
  • Trigger, notifiche e webhook. Pub/Sub offre soluzioni basate su push la consegna di messaggi 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 un ambiente serverless in più fasi Flussi di lavoro dichiarativamente. 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 (Connettori di integrazione) (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. per utilizzarlo nelle tue integrazioni.

Concetti principali

  • Argomento. Una risorsa denominata a cui i publisher inviano i messaggi.
  • Abbonamento. Una risorsa denominata che rappresenta lo stream di messaggi di un singolo argomento specifico da inviare all'applicazione del sottoscrittore. Per ulteriori dettagli sulle sottoscrizioni e sulla semantica della consegna dei messaggi, vedi il Guida per gli iscritti.
  • Messaggio. La combinazione di dati e attributi (facoltativi) che un l'editore invia a un argomento e alla fine viene consegnato 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 riceverne i messaggi.
  • Conferma (o "ack"). Un indicatore inviato da un sottoscrittore a Pub/Sub dopo aver ha ricevuto un messaggio. I messaggi confermati vengono rimossi dalla coda dei messaggi di sottoscrizione.
  • Push e pull. I due metodi di consegna dei messaggi. Un sottoscrittore riceve i messaggi tramite il push di Pub/Sub all'endpoint scelto dal sottoscrittore o tramite il pull dal servizio.

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

Relazioni publisher-iscritti

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

Ciclo di vita dei messaggi

Passaggi successivi