Seleziona le tue preferenze relative ai cookie

Utilizziamo cookie essenziali e strumenti simili necessari per fornire il nostro sito e i nostri servizi. Utilizziamo i cookie prestazionali per raccogliere statistiche anonime in modo da poter capire come i clienti utilizzano il nostro sito e apportare miglioramenti. I cookie essenziali non possono essere disattivati, ma puoi fare clic su \"Personalizza\" o \"Rifiuta\" per rifiutare i cookie prestazionali.

Se sei d'accordo, AWS e le terze parti approvate utilizzeranno i cookie anche per fornire utili funzionalità del sito, ricordare le tue preferenze e visualizzare contenuti pertinenti, inclusa la pubblicità pertinente. Per continuare senza accettare questi cookie, fai clic su \"Continua\" o \"Rifiuta\". Per effettuare scelte più dettagliate o saperne di più, fai clic su \"Personalizza\".

Comportamento di ripetizione - AWS SDKs e strumenti

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Comportamento di ripetizione

Nota

Per informazioni sulla comprensione del layout delle pagine delle impostazioni o sull'interpretazione della tabella Support by AWS SDKs and tools riportata di seguito, vedereInformazioni sulle pagine delle impostazioni di questa guida.

Il comportamento Riprova include impostazioni relative al modo in cui il SDKs tentativo di ripristino degli errori risultanti dalle richieste effettuate a. Servizi AWS

Configura questa funzionalità utilizzando quanto segue:

retry_mode- impostazione dei AWS config file condivisi
AWS_RETRY_MODE- variabile d'ambiente
aws.retryMode- Proprietà del sistema JVM: solo Java/Kotlin

Specifica in che modo l'SDK o lo strumento di sviluppo tenta di riprovare.

Valore predefinito: questo valore è specifico del tuo SDK. Controlla la tua guida SDK specifica o la base di codice del tuo SDK per verificare se è predefinita. retry_mode

Valori validi:

  • standard— (Consigliato) Il set consigliato di regole per i tentativi ripetuti. AWS SDKs Questa modalità include un set standard di errori che vengono ripetuti e regola automaticamente il numero di tentativi per massimizzare la disponibilità e la stabilità. Questa modalità è sicura per l'uso in applicazioni multi-tenant. Il numero massimo predefinito di tentativi con questa modalità è tre, a meno che non max_attempts sia configurata in modo esplicito.

  • adaptive— Una modalità di riprova, adatta solo per casi d'uso specializzati, che include la funzionalità della modalità standard e la limitazione automatica della velocità lato client. Questa modalità di riprova non è consigliata per le applicazioni multi-tenant, a meno che non si prenda cura di isolare i tenant delle applicazioni. Per ulteriori informazioni, consulta Scelta tra le standard modalità e adaptive riprova. Questa modalità è sperimentale e potrebbe modificare il comportamento in futuro.

  • legacy— (Non consigliato) Specifico per il tuo SDK (consulta la guida SDK specifica o la base di codice dell'SDK).

max_attempts- impostazione di file condivisi AWS config
AWS_MAX_ATTEMPTS- variabile d'ambiente
aws.maxAttempts- Proprietà del sistema JVM: solo Java/Kotlin

Speciifica il numero massimo di tentativi da effettuare su una richiesta.

Valore predefinito: se questo valore non è specificato, il valore predefinito dipende dal valore dell'retry_modeimpostazione:

  • Se lo retry_mode èlegacy: utilizza un valore predefinito specifico per il tuo SDK (consulta la guida SDK specifica o la base di codice dell'SDK per max_attempts i valori predefiniti).

  • Se lo retry_mode èstandard: effettua tre tentativi.

  • Se lo retry_mode èadaptive: effettua tre tentativi.

Valori validi: numero maggiore di 0.

Scelta tra le standard modalità e adaptive riprova

Ti consigliamo di utilizzare la modalità standard Riprova a meno che tu non sia sicuro che il tuo utilizzo sia più adatto. adaptive

Nota

La adaptive modalità presuppone che stiate raggruppando i client in base all'ambito in cui il servizio di backend può limitare le richieste. Se non lo fai, le limitazioni di una risorsa potrebbero ritardare le richieste di una risorsa non correlata se utilizzi lo stesso client per entrambe le risorse.

Standard Adattabile
Casi d'uso delle applicazioni: tutti. Casi d'uso dell'applicazione:
  1. Non sensibile alla latenza.

  2. Il client accede solo a una singola risorsa oppure state fornendo la logica per raggruppare i client separatamente in base alla risorsa di servizio a cui si accede.

Supporta l'interruzione del circuito per impedire che l'SDK riprovi durante le interruzioni. Supporta l'interruzione del circuito per impedire all'SDK di riprovare durante le interruzioni.
Utilizza un backoff esponenziale con jitterato in caso di guasti. Utilizza durate di backoff dinamiche per cercare di ridurre al minimo il numero di richieste non riuscite, in cambio del potenziale aumento della latenza.
Non ritarda mai il primo tentativo di richiesta, ma solo i tentativi successivi. Può rallentare o ritardare il tentativo di richiesta iniziale.

Se si sceglie di utilizzare la adaptive modalità, l'applicazione deve creare client progettati in base a ciascuna risorsa che potrebbe essere limitata. Una risorsa, in questo caso, è ottimizzata in modo più preciso e non si limita a pensare a ciascuna di esse. Servizio AWS Servizi AWS possono avere dimensioni aggiuntive che utilizzano per limitare le richieste. Usiamo il servizio Amazon DynamoDB come esempio. DynamoDB Regione AWS utilizza inoltre la tabella a cui si accede per limitare le richieste. Ciò significa che una tabella a cui accede il codice potrebbe essere limitata più di altre. Se il codice utilizza lo stesso client per accedere a tutte le tabelle e le richieste a una di tali tabelle sono limitate, la modalità di riprova adattiva ridurrà la frequenza di richieste per tutte le tabelle. Il codice deve essere progettato per avere un client per coppia. Region-and-table Se riscontri una latenza inaspettata durante l'utilizzo della adaptive modalità, consulta la guida alla AWS documentazione specifica per il servizio che stai utilizzando.

Dettagli sull'implementazione della modalità Riprova

AWS SDKs Utilizzano i token bucket per decidere se ritentare una richiesta e (nel caso della modalità adaptive retry) con quale rapidità inviare le richieste. L'SDK utilizza due bucket di token: un bucket di token retry e un bucket di token di frequenza di richiesta.

  • Il bucket retry token viene utilizzato per determinare se l'SDK debba disabilitare temporaneamente i nuovi tentativi per proteggere i servizi upstream e downstream durante le interruzioni. I token vengono acquisiti dal bucket prima di tentare di riprovare e i token vengono restituiti al bucket quando le richieste hanno esito positivo. Se il bucket è vuoto quando viene tentato un nuovo tentativo, l'SDK non riproverà a eseguire la richiesta.

  • Il bucket del token del tasso di richiesta viene utilizzato solo in modalità di adaptive ripetizione per determinare la velocità di invio delle richieste. I token vengono acquisiti dal bucket prima dell'invio di una richiesta e i token vengono restituiti al bucket a una velocità determinata dinamicamente in base alle risposte di limitazione restituite dal servizio.

Di seguito è riportato lo pseudocodice di alto livello per entrambe le modalità e retry: standard adaptive

MakeSDKRequest() { attempts = 0 loop { GetSendToken() response = SendHTTPRequest() RequestBookkeeping(response) if not Retryable(response) return response attempts += 1 if attempts >= MAX_ATTEMPTS: return response if not HasRetryQuota(response) return response delay = ExponentialBackoff(attempts) sleep(delay) } }

Di seguito sono riportati ulteriori dettagli sui componenti utilizzati nello pseudocodice:

GetSendToken:

Questo passaggio viene utilizzato solo in adaptive modalità riprova. Questo passaggio acquisisce un token dal bucket di token del tasso di richiesta. Se un token non è disponibile, aspetterà che ne diventi disponibile uno. Il tuo SDK potrebbe avere opzioni di configurazione disponibili per fallire la richiesta anziché attendere. I token presenti nel bucket vengono ricaricati a una velocità determinata dinamicamente, in base al numero di risposte di limitazione ricevute dal client.

SendHTTPRequest:

Questo passaggio invia la richiesta a. AWS La maggior parte AWS SDKs utilizza una libreria HTTP che utilizza pool di connessioni per riutilizzare una connessione esistente quando si effettua una richiesta HTTP. In genere, le connessioni vengono riutilizzate se una richiesta non è riuscita a causa di errori di limitazione, ma non se una richiesta fallisce a causa di un errore temporaneo.

RequestBookkeeping:

I token vengono aggiunti al token bucket se la richiesta ha esito positivo. Solo per la modalità adaptive riprova, la frequenza di riempimento del bucket di token del tasso di richiesta viene aggiornata in base al tipo di risposta ricevuta.

Retryable:

Questo passaggio determina se una risposta può essere ritentata in base a quanto segue:

  • Codice di stato HTTP .

  • Il codice di errore restituito dal servizio.

  • Errori di connessione, definiti come qualsiasi errore ricevuto dall'SDK in cui non viene ricevuta una risposta HTTP dal servizio.

Gli errori transitori (codici di stato HTTP 400, 408, 500, 502, 503 e 504) e gli errori di limitazione (codici di stato HTTP 400, 403, 429, 502, 503 e 509) possono essere tutti potenzialmente ritentati. Il comportamento dei tentativi SDK viene determinato in combinazione con codici di errore o altri dati del servizio.

MAX_ATTEMPTS:

Il numero massimo di tentativi predefinito è impostato dall'retry_modeimpostazione, a meno che l'impostazione non venga sovrascritta dall'impostazione. max_attempts

HasRetryQuota

Questo passaggio acquisisce un token dal bucket retry token. Se il bucket del token Retry è vuoto, la richiesta non verrà ritentata.

ExponentialBackoff

Per un errore che può essere ritentato, il ritardo tra i tentativi viene calcolato utilizzando un backoff esponenziale troncato. Viene SDKs utilizzato un backoff esponenziale binario troncato con jitter. L'algoritmo seguente mostra come viene definita la quantità di tempo per dormire, in secondi, per una risposta a una richiesta: i

seconds_to_sleep_i = min(b*r^i, MAX_BACKOFF)

Nell'algoritmo precedente, si applicano i seguenti valori:

b = random number within the range of: 0 <= b <= 1

r = 2

MAX_BACKOFF = 20 secondsper la maggior parte SDKs. Consulta la guida SDK o il codice sorgente specifici per avere conferma.

Support by AWS SDKs and tools

Di seguito sono SDKs supportate le funzionalità e le impostazioni descritte in questo argomento. Vengono annotate eventuali eccezioni parziali. Tutte le impostazioni delle proprietà del sistema JVM sono supportate solo da AWS SDK per Java and the. SDK AWS for Kotlin

SDK Supportato Note o ulteriori informazioni
AWS CLI v2
SDK per C++
SDK per Go V2 (1.x)
SDK per Go 1.x (V1) No
SDK per Java 2.x
SDK per Java 1.x Proprietà del sistema JVM: usa com.amazonaws.sdk.maxAttempts invece diaws.maxAttempts; usa invece di. com.amazonaws.sdk.retryMode aws.retryMode
SDK per 3.x JavaScript
SDK per 2.x JavaScript No Supporta un numero massimo di tentativi, un backoff esponenziale con jitter e un'opzione per un metodo personalizzato per il backoff dei tentativi.
SDK per Kotlin
SDK per.NET 3.x
SDK per PHP 3.x
SDK per Python (Boto3)
SDK per Ruby 3.x
SDK per Rust
SDK per Swift
Strumenti per PowerShell
PrivacyCondizioni del sitoPreferenze cookie
© 2025, Amazon Web Services, Inc. o società affiliate. Tutti i diritti riservati.