Il backoff esponenziale è una strategia standard di gestione degli errori per le applicazioni di rete in cui un client riprova periodicamente una richiesta non riuscita con ritardi crescenti tra le richieste. I client devono utilizzare il backoff esponenziale per tutte le richieste a Memorystore per Valkey che restituiscono errori di codice di risposta HTTP 5xx
e 429
.
Comprendere come funziona il backoff esponenziale è importante se stai creando applicazioni client che utilizzano l'API REST Memorystore for Valkey .
Se utilizzi la console Google Cloud, quest'ultima invia a Memorystore for Valkey per tuo conto e gestisce le eventuali richieste il backoff.
Algoritmo di esempio
Un algoritmo di backoff esponenziale riprova le richieste aumentando in modo esponenziale il tempo di attesa tra i tentativi fino a un tempo di backoff massimo. Un esempio è:
Effettua una richiesta a Memorystore for Valkey.
Se la richiesta non va a buon fine, attendi 1 secondo +
random_number_milliseconds
secondi e riprova la richiesta.Se la richiesta non va a buon fine, attendi 2 secondi +
random_number_milliseconds
e riprova la richiesta.Se la richiesta non va a buon fine, attendi 4 secondi +
random_number_milliseconds
e riprova la richiesta.E così via, fino a un
maximum_backoff
volta.Continua ad attendere e riprovare fino al numero massimo di nuovi tentativi, ma non aumentare il periodo di attesa tra i tentativi.
dove:
Il tempo di attesa è min(((2^
n
)+random_number_milliseconds
),maximum_backoff
), conn
incrementato di 1 per ogni iterazione (richiesta).random_number_milliseconds
è un numero casuale di millisecondi inferiore o uguale a 1000. Ciò consente di evitare i casi in cui molti client vengono sincronizzati situazione e tutti riprovano contemporaneamente, inviando le richieste in tra le onde. Il valore dirandom_number_milliseconds
deve essere ricalcolato dopo a ogni richiesta di nuovo tentativo.maximum_backoff
in genere dura 32 o 64 secondi. Il valore appropriato dipende dal caso d'uso.
Puoi continuare a riprovare una volta raggiunta la soglia (maximum_backoff
).
I tentativi successivi a questo punto non devono continuare ad aumentare il tempo di backoff. Per
Ad esempio, se un client utilizza un tempo maximum_backoff
di 64 secondi, dopo
raggiungendo questo valore, il client può riprovare ogni 64 secondi. A un certo punto,
i client devono essere impediti di riprovare all'infinito.
Il backoff massimo e il numero massimo di nuovi tentativi utilizzati da un client dipende dal caso d'uso e dalle condizioni della rete. Ad esempio, dispositivi mobili i client di un'applicazione potrebbero dover riprovare più volte e per intervalli più lunghi rispetto ai client desktop della stessa applicazione.
Se le richieste di ripetizione non vanno a buon fine dopo aver superato il numero massimo di tentativi, segnala o registra un errore utilizzando uno dei metodi elencati in Ricevere assistenza.