Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Niveles de coherencia
Amazon Cloud Directory es un almacén de directorios distribuido. Los datos se distribuyen en varios servidores en distintas zonas de disponibilidad. Una solicitud de escritura correcta actualiza los datos en todos los servidores. Los datos finalmente están disponibles en todos los servidores, normalmente en un segundo. Para ayudar a los usuarios del servicio, Cloud Directory ofrece dos niveles de coherencia para operaciones de lectura. En esta sección se describen los distintos niveles de coherencia y finalmente la naturaleza coherente de Cloud Directory.
Niveles de aislamiento de lectura
Al leer datos desde Cloud Directory, debe especificar el nivel de aislamiento desde el que desee leer. Los distintos niveles de aislamiento presentan compromisos entre latencia y frescura de los datos.
-
FINAL— El nivel de aislamiento de la instantánea lee los datos que estén disponibles inmediatamente.Proporciona la menor latencia de cualquier nivel de aislamiento. También proporciona una vista potencialmente antigua de los datos en el directorio. El aislamiento EVENTUAL no proporciona coherencia de lectura tras escritura. Esto significa que no se garantiza que pueda leer los datos inmediatamente después de escribirlos.
-
SERIALIZABLESERIALIZABLE: el nivel de aislamiento serializable proporciona el mayor nivel de coherencia que ofrece Cloud Directory. Las lecturas realizadas en el nivel de aislamiento SERIALIZABLE garantizan que reciba datos de cualquier escritura correcta. Si se ha realizado un cambio en los datos que ha solicitado y dicho cambio aún no está disponible, el sistema rechaza la solicitud con
RetryableConflictException
. Le recomendamos que vuelva a intentar estas excepciones (consulte la sección siguiente). Cuando se vuelve a intentar correctamente, las lecturas SERIALIZABLE ofrecen coherencia de lectura tras escritura.
Solicitudes de escritura
Cloud Directory garantiza que varias solicitudes de escritura no actualicen simultáneamente el mismo objeto u objetos. Si se encuentran dos solicitudes de escritura operando en los mismos objetos, una de las operaciones falla con una RetryableConflictException
. Le recomendamos que vuelva a intentar estas excepciones (consulte la sección siguiente).
nota
Las respuestas RetryableConflictException
recibidas durante las operaciones de escritura no se pueden utilizar para detectar las condiciones de carrera. Dado un caso de uso que haya mostrado precipitar esta situación, no hay garantías de que siempre se produzca una excepción. Que una excepción se produzca o no depende del orden de cada solicitud que se está procesando internamente.
RetryableConflictExceptions
Al realizar las operaciones de escritura o de lectura con un nivel de aislamiento SERIALIZABLE después de una escritura en el mismo objeto, Cloud Directory podría responder con unaRetryableConflictException
. Esta excepción indica que los servidores de Cloud Directory no han procesado todavía el contenido de la escritura anterior. Estas situaciones son transitorias y se corrigen a sí mismas con rapidez. Es importante tener en cuenta que RetryableConflictException
no se puede utilizar para detectar ningún tipo de coherencia de lectura tras escritura. No se garantiza que un determinado caso de uso provoque esta excepción.
Le recomendamos que configure sus clientes de Cloud Directory para volver a intentar la prueba de laRetryableConflictException
. Esta configuración proporciona un comportamiento sin errores durante la operación. El siguiente código de ejemplo demuestra cómo se puede hacer esta configuración en 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); } }