Livelli di consistenza - Amazon Cloud Directory

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à.

Livelli di consistenza

Amazon Cloud Directory è uno store di directory distribuite. I dati vengono distribuiti su più server in diverse zone di disponibilità. Una richiesta di scrittura corretta aggiorna i dati su tutti i server. I dati sono infine disponibili su tutti i server, in genere entro un secondo. Per facilitare gli utenti del servizio, Cloud Directory offre due livelli di consistenza per le operazioni di lettura. Questa sezione descrive i diversi livelli di consistenza e la natura di consistenza finale di Cloud Directory.

Livelli di isolamento di lettura

Durante la lettura di dati da parte di Cloud Directory, è necessario specificare il livello di isolamento da cui intendi effettuare la lettura. Diversi livelli di isolamento presentano trade-off tra la latenza e la freschezza dei dati.

  • FINALE: il livello di isolamento degli snapshot esegue la lettura di qualsiasi dato immediatamente disponibile: .Offre la latenza minima di qualsiasi livello di isolamento. Fornisce inoltre una visualizzazione potenzialmente precedente dei dati della directory. L'isolamento EVENTUAL non fornisce consistenza lettura dopo scrittura. Questo significa che non è garantito che tu sia in grado di leggere i dati immediatamente dopo averli scritti.

  • SERIALIZZABILE: il livello di isolamento serializzabile fornisce il massimo livello di consistenza offerto da Cloud Directory. Le letture effettuate a livello di isolamento SERIALIZABLE ti garantiscono la ricezione di dati da qualsiasi scrittura corretta. Se è stata effettuata una modifica ai dati richiesti e tale modifica non è ancora disponibile, il sistema rifiuta la tua richiesta tramite RetryableConflictException. Ti consigliamo di tentare nuovamente queste eccezioni (consulta la sezione seguente). Una volta tentate nuovamente con esito positivo, le letture SERIALIZABLE offrono una consistenza lettura dopo scrittura.

Richieste di scrittura

Cloud Directory garantisce che più richieste di scrittura non aggiornino simultaneamente lo stesso oggetto o gli stessi oggetti. Se vengono rilevate due richieste di scrittura operanti sugli stessi oggetti, una delle operazioni avrà esito negativo con una eccezione RetryableConflictException. Ti consigliamo di tentare nuovamente queste eccezioni (consulta la sezione in basso).

Nota

Le risposte RetryableConflictException ricevute durante le operazioni di scrittura non possono essere utilizzate per rilevare le race condition. Dato un caso d'uso in cui si presenta una precipitazione di tale situazione, non vi è alcuna garanzia che si verifichi sempre un'eccezione. La verifica o mancata verifica di un'eccezione dipende dall'ordine di ogni richiesta elaborata internamente.

RetryableConflictExceptions

Durante l'esecuzione di operazioni di scrittura o di operazioni di lettura con un livello di isolamento SERIALIZALE dopo un scrittura sullo stesso oggetto, la Cloud Directory possono rispondere con una eccezione.RetryableConflictException: . Questa eccezione indica che i server di Cloud Directory non hanno ancora elaborato i contenuti della scrittura precedente. Queste situazioni sono transitorie e si risolvono autonomamente in modo rapido. È importante notare che l'eccezione RetryableConflictException non può essere utilizzata per rilevare alcun tipo di consistenza lettura dopo scrittura. Non vi è alcuna garanzia che un determinato caso d'uso possa causare questa eccezione.

Ti consigliamo di configurare i client di Cloud Directory per tentare nuovamente l'eccezione.RetryableConflictException: . Questa configurazione offre un comportamento senza errori durante il funzionamento. Il seguente codice di esempio illustra come effettuare questa configurazione in Java.

RetryPolicy retryPolicy = new RetryPolicy(new CloudDirectoryRetryCondition(), PredefinedRetryPolicies.DEFAULT_BACKOFF_STRATEGY, PredefinedRetryPolicies.DEFAULT_MAX_ERROR_RETRY, true); ClientConfiguration clientConfiguration = new ClientConfiguration().withRetryPolicy(retryPolicy); AmazonCloudDirectory client = new AmazonCloudDirectory ( new BasicAWSCredentials(…), clientConfiguration); public static class CloudDirectoryRetryCondition extends SDKDefaultRetryCondition { @Override public boolean shouldRetry(AmazonWebServiceRequest originalRequest, AmazonClientException exception, int retriesAttempted) { if (exception.getCause() instanceof RetryableConflictException) { return true; } return super.shouldRetry(originalRequest, exception, retriesAttempted); } }