A volte le Data pipelines registrano picchi di traffico pubblicato. I picchi di traffico possono sopraffare gli abbonati, a meno che tu non sia preparato. Una soluzione semplice per evitare picchi di traffico è aumentare dinamicamente le risorse degli abbonati Pub/Sub per elaborare più messaggi. Tuttavia, questa soluzione potrebbe aumentare i costi o non funzionare immediatamente. Ad esempio, potresti aver bisogno di molte VM.
Il controllo del flusso sul lato dell'abbonato consente all'abbonato di regolare la frequenza con cui vengono importati i messaggi. Il controllo del flusso gestisce quindi i picchi di traffico senza aumentare i costi o fino a quando l'abbonato non viene scalato.
Il controllo flusso è una funzionalità disponibile nella libreria client di alto livello Pub/Sub. Puoi anche implementare la tua programmazione di controllo flusso quando utilizzi una libreria client di basso livello.
La necessità di un controllo del flusso indica che i messaggi vengono pubblicati a un ritmo superiore a quello di consumo. Se questo scenario è uno stato permanente, anziché un picco transitorio nel volume dei messaggi, valuta la possibilità di aumentare il numero di istanze client degli abbonati.
Configurazione del controllo del flusso
Il controllo flusso ti consente di configurare il numero massimo di byte allocati per le richieste in sospeso e il numero massimo di messaggi in sospeso consentiti. Imposta questi limiti in base alla capacità di throughput delle macchine client.
I valori predefiniti per le variabili di controllo flusso e i nomi delle variabili possono variare in base alle librerie client. Ad esempio, nella libreria client Java, le seguenti variabili configurano il controllo del flusso:
setMaxOutstandingElementCount(). Definisce il numero massimo di messaggi per i quali Pub/Sub non ha ricevuto conferme o conferme negative.
setMaxOutstandingRequestBytes(). Definisce le dimensioni massime dei messaggi per i quali Pub/Sub non ha ricevuto conferme o conferme negative.
Se il limite per setMaxOutstandingElementCount()
o
setMaxOutstandingRequestBytes()
viene superato, il client sottoscrittore
non estrae altri messaggi. Questo comportamento continua finché i messaggi
che sono già stati estratti non vengono confermati o non confermati.
In questo modo possiamo allineare il throughput al costo associato all'utilizzo di un numero maggiore di abbonati.
Esempi di codice per il controllo del flusso
Per controllare la frequenza con cui il client sottoscrittore riceve i messaggi, utilizza le funzionalità di controllo del flusso dell'abbonato. Queste funzionalità di controllo del flusso sono illustrate nei seguenti esempi:
C++
Prima di provare questo esempio, segui le istruzioni di configurazione C++ riportate nella guida rapida all'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Pub/Sub C++.
C#
Prima di provare questo esempio, segui le istruzioni di configurazione C# riportate nella guida rapida all'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Pub/Sub C#.
Vai
Prima di provare questo esempio, segui le istruzioni di configurazione di Go riportate nella guida rapida all'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Pub/Sub Go.
Java
Prima di provare questo esempio, segui le istruzioni di configurazione di Java riportate nella Guida rapida all'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Java Pub/Sub.
Node.js
Prima di provare questo esempio, segui le istruzioni di configurazione di Node.js riportate nella guida rapida all'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Pub/Sub Node.js.
Node.js
Prima di provare questo esempio, segui le istruzioni di configurazione di Node.js riportate nella guida rapida all'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Pub/Sub Node.js.
Python
Prima di provare questo esempio, segui le istruzioni di configurazione di Python riportate nella guida rapida all'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Pub/Sub per Python.
Ruby
Prima di provare questo esempio, segui le istruzioni di configurazione di Ruby riportate nella guida rapida all'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Ruby Pub/Sub.
Passaggi successivi
Scopri le altre opzioni di pubblicazione che puoi configurare per un abbonamento:
Gestire gli errori relativi ai messaggi con il criterio di ripetizione dell'abbonamento
Inoltrare i messaggi non recapitati a un argomento messaggi non recapitabili
Riprodurre i messaggi per i quali è stato ricevuto l'acknowledgement o eliminare i messaggi