DAX: Cómo funciona - Amazon DynamoDB

DAX: Cómo funciona

Amazon DynamoDB Accelerator (DAX) está diseñado para ejecutarse en un entorno Amazon Virtual Private Cloud (Amazon VPC). El servicio Amazon VPC define una red virtual que se parece mucho a un centro de datos tradicional. Con una VPC, puede controlar el rango de direcciones IP, las subredes, las tablas de ruteo, las gateways de red y los ajustes de seguridad. Puede lanzar un clúster de DAX en la red virtual y controlar el acceso al clúster mediante grupos de seguridad de Amazon VPC.

nota

Si creó la cuenta de AWS después del 4 de diciembre de 2013, ya dispone de una VPC predeterminada en cada región de AWS. La VPC está lista para comenzar a usarla de inmediato sin tener que realizar ningún paso de configuración adicional.

Para obtener más información, consulte VPC predeterminada y subredes predeterminadas en la Guía del usuario de Amazon VPC.

En el siguiente diagrama se muestra información general de alto nivel sobre DAX.


            Diagrama de flujo de trabajo que muestra la interacción de la aplicación, el cliente de DAX y el clúster de DAX en una VPC.

Para crear un clúster de DAX, se usa la AWS Management Console. A menos que especifique otra cosa, el clúster de DAX se ejecuta dentro de la VPC predeterminada. Para ejecutar su aplicación, lance una instancia de Amazon EC2 en su Amazon VPC. A continuación, implemente su aplicación (con el cliente de DAX) en la instancia EC2.

En tiempo de ejecución, el cliente de DAX dirige todas las solicitudes de la API de DynamoDB de la aplicación al clúster de DAX. Si DAX puede procesar una de estas solicitudes de la API directamente, lo hace. En caso contrario, transmite la solicitud a DynamoDB.

Por último, el clúster de DAX devuelve los resultados a la aplicación.

Procesamiento de solicitudes en DAX

Un clúster de DAX consta de uno o varios nodos. Cada nodo ejecuta su propia instancia del software de almacenamiento en caché de DAX. Uno de los nodos sirve como nodo principal del clúster. Los nodos adicionales (en caso de incluirse) actúan como réplicas de lectura. Para obtener más información, consulte Nodos.

La aplicación puede acceder a DAX especificando el punto de enlace del clúster de DAX. El software de cliente de DAX utiliza el punto de enlace del clúster para realizar el ruteo y el equilibrio de carga inteligente.

Operaciones de lectura

DAX puede responder a las siguientes llamadas a la API:

  • GetItem

  • BatchGetItem

  • Query

  • Scan

Si la solicitud especifica lecturas eventualmente consistentes (el comportamiento predeterminado), intenta leer el elemento en DAX:

  • Si el elemento está disponible en DAX (un acierto de caché), DAX devuelve el elemento a la aplicación sin acceder a DynamoDB.

  • Si el elemento no está disponible en DAX (un error de caché), DAX transmite la solicitud a DynamoDB. Cuando recibe la respuesta de DynamoDB, DAX devuelve los resultados a la aplicación. También escribe los resultados en la caché en el nodo principal.

nota

Si el clúster contiene réplicas de lectura, DAX las mantiene automáticamente sincronizadas con el nodo primario. Para obtener más información, consulte Clústeres.

Si la solicitud especifica lecturas fuertemente consistentes, DAX transmite la solicitud a DynamoDB. Los resultados de DynamoDB no se almacenan en caché en DAX. Sencillamente, se devuelven a la aplicación.

Operaciones de escritura

Las siguientes operaciones de la API de DAX se consideran de "escritura indirecta" (write-through):

  • BatchWriteItem

  • UpdateItem

  • DeleteItem

  • PutItem

Con estas operaciones, los datos se escriben primero en la tabla de DynamoDB y, a continuación, en el clúster de DAX. La operación solo se lleva a cabo correctamente si los datos se escriben correctamente en ambos casos: en la tabla y en DAX.

Otras operaciones

DAX no reconoce ninguna operación de DynamoDB de administración de tablas (tales como CreateTable, UpdateTable, etc.). Si la aplicación tiene que realizar estas operaciones, debe obtener acceso a DynamoDB directamente, sin usar DAX.

Para obtener información detallada acerca de la coherencia de DAX y DynamoDB, consulte Modelos de consistencia de DAX y DynamoDB.

Para obtener información sobre el funcionamiento de las transacciones en DAX, consulte Uso de las API transaccionales en DynamoDB Accelerator (DAX).

Limitación de velocidad de solicitudes

Si el número de solicitudes enviadas a DAX supera la capacidad de un nodo, DAX limita la velocidad a la que acepta solicitudes adicionales devolviendo una ThrottlingException. DAX evalúa continuamente la utilización de la CPU para determinar el volumen de solicitudes que puede procesar manteniendo el clúster en buen estado.

Puede monitorear la métrica ThrottledRequestCount que DAX publica en Amazon CloudWatch. Si ve estas excepciones periódicamente, debería plantearse escalar el clúster.

Caché de elementos

DAX mantiene una caché de elementos para almacenar los resultados de las operaciones GetItem y BatchGetItem. Los elementos en la caché representan datos con consistencia final de DynamoDB y se almacenan según sus valores de clave principal.

Cuando una aplicación envía una solicitud GetItem o BatchGetItem, DAX intenta leer los elementos directamente en la caché de elementos, para lo cual utiliza los valores de clave especificados. Si encuentra los elementos (aciertos de caché), DAX los devuelve a la aplicación de forma inmediata. Si los elementos no se encuentran (error de caché), DAX envía la solicitud a DynamoDB. DynamoDB procesa las solicitudes usando lecturas eventualmente consistentes y devuelve los elementos a DAX. DAX los almacena en la caché de elementos y, a continuación, los devuelve a la aplicación.

La caché de elementos tiene una configuración de período de vida (TTL, por sus siglas en inglés), predeterminada de 5 minutos. DAX asigna una marca temporal a cada elemento que escribe en la caché de elementos. Un elemento vence cuando ha permanecido en la caché más tiempo del indicado en el ajuste de TTL. Si emite una solicitud GetItem para un elemento vencido, se considera un error de caché, en cuyo caso DAX envía la solicitud GetItem a DynamoDB.

nota

Puede especificar el ajuste de TTL de la caché de elementos al crear un clúster de DAX nuevo. Para obtener más información, consulte Administración de los clústeres de DAX .

DAX también mantiene una lista de elementos menos usados recientemente (LRU) para la caché de elementos. La lista LRU rastrea cuándo se escribió un elemento por primera vez en la caché y cuándo se leyó por última vez en ella. Si la caché de elementos se llena, DAX expulsa los elementos más antiguos (aunque todavía no hayan caducado) para dejar espacio a los nuevos. El algoritmo LRU siempre está habilitado para la caché de elementos y no es configurable por el usuario.

Si especifica la configuración de TTL de la caché de elemento en cero, los elementos de la caché de elementos solo se actualizarán debido a una expulsión de LRU o a una operación de «escritura indirecta».

Para obtener información detallada sobre la coherencia de la caché de elementos en DAX, consulte Comportamiento de la caché de elemento de DAX.

Caché de consultas

DAX también mantiene una caché de consultas para almacenar los resultados de las operaciones Query y Scan. Los elementos de esta caché representan los conjuntos de resultados de las consultas y los exámenes de las tablas de DynamoDB. Estos conjuntos de resultados se almacenan por los valores de sus parámetros.

Cuando una aplicación envía una solicitud Query o Scan, DAX intenta leer un conjunto de resultados coincidente en la caché de consultas, para lo cual utiliza los valores de los parámetros especificados. Si encuentra el conjunto de resultados (acierto de caché), DAX lo devuelve a la aplicación de forma inmediata. Si el conjunto de resultados no se encuentra (error de caché), DAX envía la solicitud a DynamoDB. DynamoDB procesa las solicitudes usando lecturas eventualmente consistentes y devuelve el conjunto de resultados a DAX. DAX lo almacena en la caché de consultas y, a continuación, lo devuelve a la aplicación.

nota

Puede especificar el ajuste de TTL de la caché de consultas al crear un clúster de DAX nuevo. Para obtener más información, consulte Administración de los clústeres de DAX .

DAX también mantiene una lista LRU para la caché de consultas. La lista rastrea cuándo se escribió un conjunto de resultados por primera vez en la caché y cuándo se leyó por última vez en ella. Si la caché de consultas se llena, DAX expulsa los conjuntos de resultados más antiguos (aunque todavía no hayan vencido) para dejar espacio a los nuevos. El algoritmo LRU siempre está habilitado para la caché de consultas y no es configurable por el usuario.

Si especifica la configuración de TTL de la caché de consulta en cero, la respuesta de la consulta no se almacenará en la caché.

Para obtener información detallada acerca de la coherencia de la caché de consultas en DAX, consulte Comportamiento de la caché de consulta de DAX.