Best practice per la sottoscrizione a un argomento Pub/Sub

Durante la sottoscrizione, un client abbonato riceve messaggi da un argomento Pub/Sub. Ecco alcune best practice per la sottoscrizione a Pub/Sub.

Questo documento presuppone che tu abbia già familiarità con il processo di sottoscrizione a un argomento Pub/Sub e di ricezione dei messaggi nel client del sottoscrittore.

Se non hai mai utilizzato Pub/Sub, consulta una delle guide rapide e scopri come eseguire Pub/Sub utilizzando la console, l'interfaccia a riga di comando gCloud o le librerie client.

Scegli l'abbonamento giusto

Pub/Sub offre abbonamenti standard come push e pull. Oltre alle sottoscrizioni standard, Pub/Sub offre anche sottoscrizioni di esportazione che consentono di archiviare i messaggi direttamente in una risorsa Google Cloud, senza richiedere Dataflow come intermediario. Ad esempio, le sottoscrizioni BigQuery archiviano i messaggi in una tabella BigQuery.

Le sottoscrizioni push sono consigliate per i seguenti scenari:

  • Non puoi includere nell'applicazione del sottoscrittore qualsiasi codice che importi la libreria client come dipendenza.

  • Il client dell'abbonato non può effettuare richieste in uscita.

  • Vuoi utilizzare la stessa istanza per elaborare i messaggi relativi a sottoscrizioni e argomenti diversi in cui il client dell'abbonato non conosce l'elenco delle sottoscrizioni.

Per i casi più generici, consigliamo di utilizzare la libreria client di alto livello. Se utilizzi il pull unario, non impostare returnImmediately su true. L'impostazione del valore su true influisce negativamente sulle prestazioni del pull. Il campo returnImmediately è stato ritirato.

Elabora i messaggi prima di confermarli

Per impostazione predefinita, Pub/Sub ignora un messaggio da una sottoscrizione dopo la conferma del messaggio. Se non elabori un messaggio prima di inviare una conferma e l'elaborazione non riesce, il servizio non consegna nuovamente il messaggio. L'eccezione si verifica quando hai configurato la conservazione dei messaggi confermati o la conservazione degli argomenti ed esegui un'operazione di ricerca.

Se hai abbonati ad alta latenza, potrebbe essere necessario impostare valori personalizzati per il controllo del flusso e la gestione del lease.

Configurare il controllo del flusso degli abbonati per i picchi di traffico temporanei

Il controllo del flusso sul lato sottoscrittore consente di evitare che gli abbonati vengano sovraccaricati a causa di picchi di traffico. Può concedere ai meccanismi di scalabilità automatica il tempo necessario per rispondere a un carico maggiore o può distribuire l'elaborazione del carico in un periodo di tempo più lungo. Il primo metodo consente di ridurre la latenza, mentre il secondo consente di risparmiare sui costi.

Per configurare il controllo del flusso, devi impostare i valori appropriati per maximum outstanding messages e total outstanding message bytes. I valori predefiniti per queste variabili di controllo del flusso e i nomi delle variabili potrebbero variare a seconda delle librerie client.

  • Numero massimo di messaggi in sospeso definisce il numero massimo di messaggi consegnati al client per i quali Pub/Sub non ha ricevuto conferme o conferme negative.

  • Byte totali dei messaggi in sospeso definisce la dimensione totale massima dei messaggi consegnati al client per i quali Pub/Sub non ha ricevuto conferme o conferme negative.

Se il limite per una di queste opzioni viene superato, il client del sottoscrittore non estrae altri messaggi. Questo comportamento continua fino a quando i messaggi già estratti non vengono confermati o negativi. In questo modo, puoi compromesso la velocità effettiva con il costo associato alla generazione di più abbonati.

Best practice per la messaggistica ordinata nell'iscrizione

Se utilizzi l'ordinamento di messaggi, assicurati di quanto segue:

  • Scegli le sottoscrizioni StreamingPull o Pull. Per una sottoscrizione push, Pub/Sub supporta un solo messaggio in sospeso per ogni chiave di ordinamento alla volta. L'invio di richieste push parallele in uno scenario di questo tipo sarebbe simile all'invio di più batch di messaggi per la stessa chiave di ordinamento per eseguire il pull dei sottoscrittori contemporaneamente. Pertanto, le sottoscrizioni push non sono consigliate per gli argomenti in cui più messaggi vengono spesso pubblicati con la stessa chiave di ordinamento o in cui la latenza è estremamente importante.

  • Attiva l'ordinamento dei messaggi nella sottoscrizione. Per quanto riguarda l'editore, se invii messaggi con una chiave di ordinamento e nella stessa regione, puoi configurare i sottoscrittori in modo che ricevano i messaggi in ordine. Sul lato abbonati, abilita la proprietà di ordinamento dei messaggi solo per gli abbonamenti per cui vuoi ricevere i messaggi ordinati. A seconda dello stato della proprietà, ogni sottoscrizione associata all'argomento può determinare se è necessario l'invio ordinato, senza alcuna influenza reciproca.

  • Conferma i messaggi in ordine. Quando utilizzi la consegna ordinata, le conferme per i messaggi successivi non vengono elaborate finché non vengono elaborate quelle dei messaggi precedenti in base alla chiave di ordinazione. Ad esempio, se i messaggi 1, 2 e 3 hanno la stessa chiave di ordinamento e li ricevi tutti e confermano solo il messaggio 3, il servizio non considera il messaggio 3 come confermato finché non vengono confermati anche i messaggi 1 e 2. Se le conferme per i messaggi 1 e 2 non vengono mai ricevuti, i messaggi 1, 2 e 3 vengono tutti recapitati.

Riepilogo delle best practice

La tabella seguente riassume le best practice consigliate in questo documento:

Argomento Attività
Scegli un tipo di abbonamento Scegli il tipo di abbonamento adatto alle tue esigenze aziendali. Se supportata dal tuo abbonamento, utilizza anche la libreria client di alto livello.
Riprodurre di nuovo un messaggio confermato Elabora un messaggio prima di confermarlo. In alternativa, configura un'operazione di ricerca in modo da non perdere i messaggi confermati.
Controllo del flusso Configura il controllo del flusso nelle impostazioni del sottoscrittore per assicurarti che gli abbonati non vengano sovraccaricati fino a quando la scalabilità automatica non viene attivata o passa il tempo.
Ordinare i messaggi Quando utilizzi la messaggistica ordinata, scegli StreamingPull o Pull, abilita l'ordinamento dei messaggi nella sottoscrizione e conferma i messaggi in ordine.

Passaggi successivi