La gestión de configuración distribuida a escala global presenta un desafío fundamental en sistemas distribuidos: cómo lograr consistencia rápida y baja latencia de lectura en un entorno geográficamente disperso, especialmente para datos que cambian infrecuentemente pero son críticos para la operación de servicios de "hot path". La solución tradicional a menudo implica compromisos entre la frescura de los datos (consistency) y la disponibilidad/latencia (availability), como se describe en el teorema CAP.

Workers KV Instant aborda este problema al aprovechar Quicksilver v2, un sistema de clave-valor diseñado para la replicación global de datos de configuración. Su objetivo es proporcionar una experiencia de "lectura local" con consistencia eventual rápida, permitiendo que los cambios se propaguen a la red de borde de Cloudflare en cientos de milisegundos, lo que es crucial para escenarios como el despliegue de banderas de características o la actualización de reglas de enrutamiento que deben ser efectivas casi de inmediato en todo el mundo.

Arquitectura del Sistema

Workers KV Instant se construye sobre Quicksilver v2, una base de datos de clave-valor interna de Cloudflare. Quicksilver v2 está diseñado para la replicación global de datos con baja latencia de acceso. Aunque el artículo no detalla la arquitectura interna de Quicksilver v2, su rendimiento sugiere un diseño que prioriza la distribución de datos a la red de borde (edge locations) de Cloudflare. Esto implica un mecanismo de replicación que empuja las actualizaciones desde un sistema de registro centralizado hacia los nodos de borde de manera eficiente.

La API expuesta a los desarrolladores es la misma que la de Workers KV, incluyendo operaciones get(), put(), list() y delete(). Sin embargo, hay diferencias clave: no soporta metadatos y las operaciones list() no tienen paginación, devolviendo todos los pares clave-valor en un namespace. La restricción de una escritura por namespace por segundo sugiere un enfoque de "single writer" o un mecanismo de consenso que serializa las escrituras para mantener la coherencia y simplificar la razón sobre el orden de las actualizaciones, posiblemente utilizando un Write-Ahead Log (WAL) interno y un algoritmo de consenso distribuido para la replicación entre los nodos primarios, antes de la distribución a los nodos de borde.

Flujo de Actualización de Datos (Write Path)

  1. 1 Cliente Realiza una operación `put()` o `delete()`
  2. 2 API Gateway Recibe la solicitud, aplica restricción de 1 escritura/segundo/namespace
  3. 3 Sistema de Registro (Quicksilver) Procesa la escritura, serializa, actualiza el estado primario
  4. 4 Mecanismo de Replicación Propaga el cambio a todas las ubicaciones de borde globalmente
  5. 5 Nodos de Borde (Edge Locations) Almacenan el nuevo valor localmente para lecturas rápidas

Flujo de Lectura de Datos (Read Path)

  1. 1 Cliente Realiza una operación `get()`
  2. 2 Worker (Cloudflare) Ejecuta código, llama a `env.APP_CONFIG.get()`
  3. 3 Nodo de Borde (Edge Location) Sirve el valor desde el caché local de Quicksilver v2
  4. 4 Respuesta Valor devuelto al Worker y luego al cliente
CapaTecnologíaJustificación
storage Quicksilver v2 Base de datos clave-valor interna de Cloudflare, optimizada para replicación global rápida y baja latencia de lectura en la red de borde. vs Workers KV Classic (basado en almacenamiento duradero con TTLs), otras bases de datos distribuidas de clave-valor (ej. DynamoDB, Cassandra)
compute Cloudflare Workers Plataforma de computación sin servidor en el borde que interactúa con Workers KV Instant para acceder a los datos de configuración. vs AWS Lambda@Edge, Fastly Compute@Edge
networking Cloudflare Global Network Infraestructura de red global que permite la replicación de datos a más de 300 ubicaciones de borde y el enrutamiento de solicitudes a la ubicación más cercana.

Trade-offs

Ganancias
  • ▲▲ Latencia de lectura p99
  • ▲▲ Velocidad de replicación de escritura
  • ▲ Costo de operaciones de lectura (Class B)
Costes
  • ▲▲ Costo de almacenamiento
  • ▲ Costo de operaciones de escritura (Class A)
  • ▲ Frecuencia de escritura (1 escritura/segundo/namespace)
  • ▲ Soporte de metadatos
  • ▲ Paginación en `list()`
  • ▲ Tamaño total del namespace (1MB)
async fetch(request, env, ctx) {
  const launched = (await env.APP_CONFIG.get("new-product-launched")) === "true";
  if (launched) {
    return new Response({/* Serve the launch homepage */});
  }
  return new Response({/* Serve the default homepage */});
}
Ejemplo de cómo un Cloudflare Worker lee una bandera de lanzamiento de producto desde Workers KV Instant en cada solicitud para controlar el flujo de la aplicación.

Fundamentos Teóricos

El problema de la replicación global de datos y la consistencia en sistemas distribuidos ha sido un tema central en la investigación académica durante décadas. El teorema CAP (Consistency, Availability, Partition tolerance) de Eric Brewer es fundamental para entender los compromisos inherentes. Workers KV Instant, al priorizar la baja latencia de lectura y la replicación global rápida, opera en un modelo de consistencia eventual, donde las escrituras se propagan a todos los nodos con el tiempo, pero las lecturas pueden no ver el cambio inmediatamente. Esto se alinea con los sistemas CP o AP que eligen entre consistencia fuerte o alta disponibilidad durante una partición de red.

Principios como los descritos en el paper "Dynamo: Amazon’s Highly Available Key-value Store" (DeCandia et al., 2007) son relevantes, ya que Dynamo explora la consistencia eventual y la replicación multi-maestro para alta disponibilidad y baja latencia. Aunque Quicksilver v2 probablemente no sea una implementación directa de Dynamo, comparte el objetivo de replicación global de datos con baja latencia. La restricción de escritura por namespace por segundo también sugiere un enfoque que simplifica la coordinación de escrituras, posiblemente inspirándose en modelos de "single leader" o "multi-leader with conflict resolution" para mantener la coherencia de las actualizaciones en el sistema de registro principal antes de la distribución a la red de borde.