Questo documento ti aiuta a scegliere il tipo di abbonamento Pub/Sub più adatto ai requisiti della tua attività.
Pub/Sub offre i seguenti tipi di sottoscrizioni:
Le sottoscrizioni pull utilizzano un client sottoscrittore per richiedere i messaggi al server Pub/Sub.
Le sottoscrizioni push utilizzano il server Pub/Sub per avviare richieste all'applicazione sottoscrittore per consegnare i messaggi.
Esporta sottoscrizioni esporta i messaggi direttamente in una risorsa Google Cloud. Questi abbonamenti includono:
Gli abbonamenti BigQuery esportano i dati in una tabella BigQuery.
Abbonamenti Bigtable (anteprima) esportano i dati in una tabella Bigtable.
Le sottoscrizioni Cloud Storage esportano i dati in un bucket Cloud Storage.
Tabella di confronto delle sottoscrizioni Pub/Sub
La tabella seguente offre alcune indicazioni per la scelta del meccanismo di distribuzione appropriato per la tua applicazione:
| Funzionalità supportate dalle sottoscrizioni Pub/Sub | ||
|---|---|---|
| Caso d'uso | Sottoscrizione pull |
|
| Sottoscrizione push |
|
|
| Esportazione dell'abbonamento |
|
|
| Endpoint | Sottoscrizione pull | Qualsiasi dispositivo su internet con credenziali autorizzate può chiamare l'API Pub/Sub. |
| Sottoscrizione push |
Un server HTTPS con certificato non autofirmato accessibile sul web pubblico. L'endpoint di ricezione potrebbe essere disaccoppiato dalla sottoscrizione Pub/Sub, in modo che i messaggi provenienti da più sottoscrizioni vengano inviati a un singolo endpoint. |
|
| Esportazione dell'abbonamento | La sottoscrizione scrive in una risorsa Google Cloud , ad esempio una tabella BigQuery o un bucket Cloud Storage. | |
| Bilanciamento del carico | Sottoscrizione pull | Più sottoscrittori possono effettuare chiamate pull alla stessa sottoscrizione. Ogni abbonato riceve un sottoinsieme di messaggi. |
| Sottoscrizione push |
Gli endpoint push possono essere bilanciatori del carico. |
|
| Esportazione dell'abbonamento |
Il servizio Pub/Sub bilancia automaticamente il carico. |
|
| Configurazione | Sottoscrizione pull |
Non è necessaria alcuna configurazione. |
| Sottoscrizione push |
|
|
| Esportazione dell'abbonamento | La Google Cloud risorsa a cui viene esportato l'abbonamento deve esistere ed essere configurata con le autorizzazioni appropriate. | |
| Controllo del flusso | Sottoscrizione pull | Il client sottoscrittore controlla la velocità di pubblicazione. L'abbonato può modificare dinamicamente la scadenza di riconoscimento, consentendo l'elaborazione dei messaggi per un periodo di tempo arbitrariamente lungo. |
| Sottoscrizione push | Il server Pub/Sub implementa automaticamente il controllo del flusso. I clienti non devono gestire il flusso di messaggi. Tuttavia, è possibile indicare che il client non è in grado di gestire il carico di messaggi corrente restituendo un errore HTTP. | |
| Esportazione dell'abbonamento | Pub/Sub implementa automaticamente il controllo del flusso per ottimizzare la scrittura dei messaggi nella risorsa di destinazione. Google Cloud | |
| Efficienza e throughput | Sottoscrizione pull | Consente di ottenere un throughput elevato con CPU e larghezza di banda ridotte consentendo la distribuzione, gli ACK e il consumo in batch in modo massiccio e parallelo. Potrebbe essere inefficiente se viene utilizzato il polling frequente per ridurre al minimo il tempo di recapito dei messaggi. |
| Sottoscrizione push | Invia un messaggio per richiesta e limita il numero massimo di messaggi in sospeso. | |
| Esportazione dell'abbonamento | Pub/Sub gestisce dinamicamente la scalabilità. | |
Quando utilizzare un abbonamento all'esportazione
Senza un abbonamento all'esportazione, hai bisogno di un abbonamento pull o push e di un abbonato (ad esempio Dataflow) per leggere i messaggi e scriverli in una risorsa Google Cloud . Il sovraccarico di esecuzione di un job Dataflow non è necessario quando i messaggi non richiedono un'elaborazione aggiuntiva prima di essere archiviati.
Le esportazioni degli abbonamenti presentano i seguenti vantaggi:
Deployment semplice. Puoi configurare una sottoscrizione di esportazione tramite un singolo workflow nella console, nella CLI, nella libreria client o nell'API Pub/Sub. Google Cloud
Costi ridotti. Riduce i costi e la latenza aggiuntivi di pipeline Pub/Sub simili che includono job Dataflow. Questa ottimizzazione dei costi è utile per i sistemi di messaggistica che non richiedono un'elaborazione aggiuntiva prima dell'archiviazione.
Monitoraggio minimo. Le esportazioni di abbonamenti fanno parte del servizio Pub/Sub multi-tenant e non richiedono l'esecuzione di job di monitoraggio separati.
Flessibilità. Le esportazioni delle iscrizioni forniscono funzionalità non disponibili nei modelli Dataflow forniti da Google. Ad esempio:
Una sottoscrizione BigQuery può utilizzare lo schema dell'argomento a cui è collegata.
Un abbonamento per Cloud Storage offre opzioni di batching dei file configurabili in base alle dimensioni dei file e al tempo trascorso.
Una sottoscrizione Bigtable (anteprima) ha un'opzione integrata per scrivere i metadati dei messaggi in una famiglia di colonne dedicata.
Tuttavia, se la tua applicazione deve eseguire trasformazioni dei dati che non possono essere implementate utilizzando le trasformazioni di un singolo messaggio (SMT) prima di scrivere i messaggi in una destinazione, ti consigliamo di utilizzare una pipeline Dataflow.
Per scoprire come trasmettere dati in streaming da Pub/Sub a BigQuery con la trasformazione utilizzando Dataflow, consulta Trasmettere dati in streaming da Pub/Sub a BigQuery.
Per scoprire come trasmettere dati in streaming da Pub/Sub a Cloud Storage con trasformazione utilizzando Dataflow, consulta l'articolo Trasmetti flussi di messaggi da Pub/Sub utilizzando Dataflow.
Passaggi successivi
Comprendi il flusso di lavoro per ogni tipo di abbonamento: