Construcción de base de datos multirregión con DynamoDB Global Tables - Replicación activo-activo

Logre lecturas y escrituras de baja latencia con replicación activo-activo multirregión. Presentamos el mecanismo de resolución de conflictos y el diseño de DR.

Descripción general de Global Tables

Global Tables es una base de datos multirregión que replica tablas DynamoDB en múltiples regiones. Mientras Aurora Global Database tiene una configuración líder/escritor, Global Tables proporciona una configuración activo-activo donde se puede leer y escribir en todas las regiones. La versión 2019.11.21 (V2) permite que las tablas réplica tengan las mismas funciones que las tablas DynamoDB normales, incluyendo índices secundarios locales y modo de capacidad bajo demanda. Las réplicas pueden agregarse o eliminarse sin detener las escrituras en la tabla.

Replicación y DR

Agregar una tabla réplica es tan simple como seleccionar una región desde la consola, y los datos existentes se replican automáticamente. Las escrituras se ejecutan en la tabla local de cada región y se replican asincrónicamente a otras regiones. Cuando el mismo ítem se actualiza simultáneamente en múltiples regiones, se resuelve automáticamente con last-writer-wins (la escritura con la marca de tiempo más reciente tiene prioridad). En el diseño de DR, se utiliza el health check y failover de Route 53 para cambiar automáticamente a la región secundaria cuando falla la región primaria. El RTO del failover depende del retraso de replicación (normalmente inferior a 1 segundo) y el DNS TTL, por lo que configurar el TTL en 60 segundos o menos reduce el tiempo de conmutación.

Resolución de conflictos y mejores prácticas

Global Tables adopta la resolución de conflictos Last Writer Wins, donde la escritura con la marca de tiempo más reciente tiene prioridad. Cuando ocurren escrituras simultáneas al mismo ítem, se implementa bloqueo optimista (escritura condicional con número de versión) en el lado de la aplicación para detectar conflictos. La latencia de replicación entre réplicas es normalmente inferior a 1 segundo, pero depende de la distancia entre regiones. Los streams de Global Tables se procesan independientemente en cada réplica, por lo que es importante un diseño que asegure la idempotencia de los triggers Lambda. Para comprender en profundidad el diseño y operación multirregión, pueden ser útiles libros especializados (Amazon).

Comparación con Aurora Global Database

Tanto Global Tables como Aurora Global Database ofrecen configuraciones multirregión, pero sus arquitecturas y casos de uso difieren. Global Tables es activo-activo con todas las regiones escribibles, mientras que Aurora Global Database usa réplicas de lectura donde solo la región primaria acepta escrituras. La replicación de Global Tables es asíncrona con consistencia eventual, mientras que Aurora soporta escritura reenviada desde secundarios a través del primario (con latencia adicional). Desde la perspectiva del modelo de datos, DynamoDB proporciona modelos clave-valor y documento, mientras Aurora ofrece SQL relacional. Elija Global Tables para acceso clave-valor de baja latencia con escrituras activo-activo globales, y Aurora Global Database para consultas SQL complejas y transacciones ACID. Los tiempos de failover también difieren: Global Tables depende del retraso de replicación más DNS TTL, mientras que Aurora requiere decenas de segundos para la promoción.

Precios y limitaciones

Las escrituras de replicación de Global Tables se cobran con las mismas WCU/WRU que las escrituras normales. En una configuración de 2 regiones, el costo de escritura se duplica aproximadamente. La transferencia de datos de replicación es gratuita. Las lecturas se ejecutan desde la réplica local de cada región, por lo que no hay costos de lectura adicionales. Para cargas de trabajo con pocas escrituras y muchas lecturas, el aumento de costo de Global Tables es limitado. Se configura la capacidad de cada región de forma independiente y se optimiza según los patrones de tráfico. No hay límites en el tamaño de tabla ni en el número de ítems, pero los ítems individuales deben ser de 400 KB o menos. Un diseño de clave de partición desigual puede generar cuellos de botella en el throughput de replicación, por lo que evitar particiones calientes es crítico. Los índices secundarios globales (GSI) también se replican entre regiones, generando costos de escritura de GSI en cada región.

Resumen

Global Tables es un servicio que proporciona DynamoDB multirregión activo-activo. Logra la sincronización de datos entre regiones con latencia de replicación inferior a 1 segundo y mantiene la consistencia con resolución de conflictos last-writer-wins. Las lecturas se ejecutan desde la réplica local con costos adicionales limitados, logrando simultáneamente DR y acceso global de baja latencia. Elija Aurora Global Database para modelos relacionales y transacciones ACID, y Global Tables para configuraciones activo-activo clave-valor.