Cómo la precomputación basada en eventos y el servicio de instantáneas redujeron la latencia de RPC un 97.5% (5,000 ms → 125 ms) y alcanzaron un 99.99% de disponibilidad en miles de millones de solicitudes de configuración de red al día.
por Manish Bansal, Yankai Zhang y Chen He
La plataforma de computación serverless de Databricks impulsa prácticamente todos nuestros productos de datos e IA, como SQL warehouses, notebooks, endpoints de servicio de ML y más. La plataforma lanza decenas de millones de VMs al día en AWS, Azure y GCP.
Antes de que se pueda ejecutar cualquier carga de trabajo serverless, la VM necesita conocer su configuración de red: ¿A qué destinos de almacenamiento puede acceder? ¿Existen endpoints de private link a través de los cuales deba enrutar el tráfico? ¿Hay cambios recientes en Unity Catalog que otorguen acceso a nuevos destinos de almacenamiento? ¿Comenzamos a consumir nuevos destinos compartidos a través de Delta Sharing?
El desafío es que la configuración de red no se almacena en un solo lugar. Debe compilarse a partir de múltiples servicios upstream, donde cada uno aporta una pieza del panorama completo.
En el diseño original, cada vez que se iniciaba un clúster serverless, nuestro servicio de configuración de red llamaba de forma síncrona a todos los servicios upstream, agregaba sus respuestas, calculaba la configuración de red por workspace y la devolvía al dataplane serverless. Esto ocurría en la ruta crítica de la creación del clúster.

Aunque la arquitectura anterior era simple y funcionaba bien a pequeña escala, sufría de problemas fundamentales que se reflejaban en las siguientes métricas que seguimos en nuestro panel de control operativo:
A medida que el uso de serverless continuó su rápido crecimiento, el modelo síncrono se volvió cada vez más insostenible. Cada llamada síncrona desencadenaba operaciones costosas en todos los workspaces, a menudo realizando cálculos duplicados. Esto añadía una carga que crecía proporcionalmente con el número de tenants y sus recursos configurados.
Rediseñamos desde cero la arquitectura de cómo Databricks entrega la configuración de red. Se basa en los siguientes principios fundamentales:

La arquitectura separa claramente dos rutas. La ruta de gestión se ejecuta de forma asíncrona en segundo plano: los servicios upstream emiten eventos de cambio a una cola de mensajes, que un procesador de eventos consume para determinar qué workspaces se ven afectados y distribuir las notificaciones de actualización por workspace. A continuación, un gestor de eventos local obtiene los detalles pertinentes de los servicios upstream, vuelve a calcular la configuración de red del workspace y almacena el resultado en un repositorio de snapshots precomputados. Un reconciliador periódico también vuelve a sincronizar todos los workspaces en segundo plano, lo que garantiza la consistencia eventual incluso si se pierden eventos. Por el contrario, la ruta de entrega es crítica y rápida: cuando un clúster serverless se inicia y necesita la configuración de red, el servicio de configuración de red la entrega directamente desde el repositorio de snapshots con una sola lectura de almacenamiento, sin requerir llamadas a servicios upstream y reduciendo significativamente la carga sobre estos.
Cuando un cliente crea una nueva conexión de Unity Catalog, Unity Catalog emite un evento de cambio a la cola de mensajes. A continuación, el procesador de eventos recibe el evento, determina qué workspaces están vinculados al metastore afectado y distribuye una notificación de actualización por workspace. En la partición de cada workspace, el gestor de eventos recibe esta notificación, obtiene los detalles de la conexión actualizada, vuelve a calcular la configuración de red del workspace y la almacena con una nueva marca de versión. A partir de ese momento, cuando un clúster serverless solicita la configuración de red, esta se entrega directamente desde el repositorio de snapshots sin necesidad de realizar llamadas upstream.
Tras implementar la nueva arquitectura, los resultados fueron transformadores en todas las métricas operativas:
| Métrica | Antes (Anterior) | Después (Nueva) | Mejora |
|---|---|---|---|
| Latencia (RPC p99) | ~5,000 ms | 125 ms | Reducción del 97.5% |
| Tasa de éxito del servidor | 99.8% | 99.99% | Tiempo de inactividad reducido |

Más allá de las métricas principales:
Este proyecto nos dejó varias lecciones sobre el funcionamiento de la infraestructura de red a escala de la nube:
La precomputación desacopla las rutas críticas. Al trasladar la costosa agregación al segundo plano, la ruta de entrega se vuelve sumamente sencilla y rápida. Esta es la decisión arquitectónica más importante. Transformó una cadena de dependencias multiservicio en una única lectura de almacenamiento.
La arquitectura basada en eventos prioriza la escalabilidad frente a la consistencia, y la reconciliación proporciona la red de seguridad. El modelo push basado en eventos gestiona los casos comunes de forma eficiente, mientras que un reconciliador periódico detecta cualquier anomalía que pueda haberse pasado por alto.
Diseñar para la extensibilidad desde el primer día. La arquitectura modular basada en etapas significa que añadir soporte para una nueva fuente de datos upstream solo requiere la implementación de una nueva etapa, sin realizar ningún cambio en el pipeline principal. A medida que la oferta de productos de Databricks se expande, el sistema de configuración de red escala con ella.
Hoy en día, este sistema atiende miles de millones de solicitudes de configuración de red al día en toda la flota global serverless de Databricks, con una latencia de aproximadamente 125 ms y una disponibilidad del 99.99%. A medida que la computación serverless continúa su rápido crecimiento, la arquitectura basada en eventos garantiza que la entrega de la configuración de red escale a la par.
Siempre estamos buscando ingenieros que disfruten resolviendo desafíos de sistemas distribuidos a escala global. Si te entusiasman este tipo de problemas, ¡nos encantaría saber de ti! Consulta las vacantes disponibles en databricks.com/careers.
(Esta entrada del blog ha sido traducida utilizando herramientas basadas en inteligencia artificial) Publicación original
Suscríbete a nuestro blog y recibe las últimas publicaciones directamente en tu bandeja de entrada.