Il backoff esponenziale è una strategia standard di gestione degli errori
per le applicazioni di rete in cui un client ritenta periodicamente una
richiesta non riuscita con ritardi crescenti tra le richieste. I client devono utilizzare
il backoff esponenziale per tutte le richieste a Memorystore for Valkey che restituiscono
errori del codice di risposta HTTP 5xx
e 429
.
Comprendere il funzionamento del backoff esponenziale è importante se stai creando applicazioni client che utilizzano direttamente l'API REST di Memorystore for Valkey.
Se utilizzi la consoleGoogle Cloud , questa invia richieste a Memorystore for Valkey per tuo conto e gestisce qualsiasi backoff necessario.
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 è:
Invia una richiesta a Memorystore for Valkey.
Se la richiesta non va a buon fine, attendi 1 +
random_number_milliseconds
secondi e riprova.Se la richiesta non va a buon fine, attendi 2 +
random_number_milliseconds
secondi e riprova.Se la richiesta non va a buon fine, attendi 4 +
random_number_milliseconds
secondi e riprova.E così via, fino a un tempo di
maximum_backoff
.Continua ad attendere e riprovare fino al numero massimo di nuovi tentativi, ma non aumentare il periodo di attesa tra un tentativo e l'altro.
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. In questo modo si evitano casi in cui molti client vengono sincronizzati da una determinata situazione e tutti riprovano contemporaneamente, inviando richieste in onde sincronizzate. Il valore dirandom_number_milliseconds
deve essere ricalcolato dopo ogni richiesta di riprova.maximum_backoff
dura in genere 32 o 64 secondi. Il valore appropriato dipende dal caso d'uso.
Puoi continuare a riprovare una volta raggiunto il tempo maximum_backoff
.
I nuovi tentativi dopo questo punto non devono continuare ad aumentare il tempo di backoff. Ad esempio, se un client utilizza un valore maximum_backoff
di 64 secondi, dopo aver raggiunto questo valore, il client può riprovare ogni 64 secondi. A un certo punto, è necessario impedire ai client di effettuare ulteriori tentativi indefinitamente.
Il backoff massimo e il numero massimo di tentativi che un client utilizza dipendono dal caso d'uso e dalle condizioni di rete. Ad esempio, i client mobile di un'applicazione potrebbero dover riprovare più volte e per intervalli di tempo più lunghi rispetto ai client desktop della stessa applicazione.
Se i tentativi di richiesta non vanno a buon fine dopo aver superato il numero massimo di tentativi, segnala o registra un errore utilizzando uno dei metodi elencati in Richiedi assistenza.