¿Qué motivó a Cloudflare a rediseñar su pipeline de propagación de DNS?

Cloudflare actualizó su pipeline de propagación de DNS para hacer frente al crecimiento masivo de las zonas, las cuales superan en algunos casos los 20 millones de registros como señala la industria sobre optimización. El Zone Builder procesa actualmente alrededor de 700 cambios de registros por segundo, casi el triple que en 2022.

A pesar de que el volumen de eventos aumentó, el verdadero problema radicaba en la naturaleza del trabajo y su relación con el tamaño de la zona. Mediante un nuevo planificador de compilaciones dirigidas y un programador unificado, la compañía logró reducir la memoria pico en un 85% y disminuir a la mitad el tiempo de propagación hacia Quicksilver.

¿Por qué dejaron de escalar las compilaciones completas en zonas grandes?

La arquitectura original dependía exclusivamente de compilaciones completas que leían, codificaban y comparaban cada registro existente, manteniendo toda la zona en la memoria RAM simultáneamente. Este enfoque se volvió insostenible para las zonas más grandes con decenas de millones de registros.

Vincular los cambios de configuración de zona resultó complejo debido a que los eventos de productos internos a menudo no especificaban la causa exacta del cambio. Las compilaciones dirigidas requerían responder con precisión qué nombres podían cambiar y qué metadatos debían actualizarse.

Para solucionar este desafío, el equipo clasificó los eventos de manera estricta y estableció que cualquier incertidumbre obligaría a realizar una compilación completa para preservar la consistencia en los servidores autoritativos.

¿Cómo funcionan las compilaciones dirigidas y el programador unificado?

El planificador de compilaciones dirigidas analiza los eventos para determinar la operación mínima que sea estrictamente segura y correcta. Este sistema clasifica el trabajo en cinco tipos diferentes, abriendo paso a actualizaciones específicas de recursos o metadatos.

El nuevo programador unificado combina múltiples eventos concurrentes para una misma zona antes de iniciar el proceso. Sigue estos pasos para aplicar lógicas de optimización de tareas similares en arquitecturas distribuidas:

Identifica y etiqueta de forma explícita los campos modificados en el origen del evento.

Verifica los datos frescos de la base de datos justo antes de ejecutar la compilación para evitar desfases por la replicación asíncrona.

¿Cómo gestiona el sistema los metadatos compartidos y múltiples IDs de zona?

Quicksilver almacena tanto las claves de registro individuales como una clave de metadatos compartida que actúa como un directorio para los servidores autoritativos. Durante los ciclos de vida de los clientes, pueden coexistir temporalmente múltiples objetos de zona para un mismo dominio público.

Para garantizar la coherencia durante la ejecución, el Zone Builder lee una instantánea de publicación reciente desde réplicas de solo lectura. El agregador de Kafka introduce un retraso controlado para cubrir la latencia normal de replicación y rechaza la lectura si la réplica se encuentra desactualizada.