Por qué abandonamos el flink table api: reduce el estado un 75% usando unions

Por qué abandonamos el flink table api: reduce el estado un 75% usando unions - Marketplace Insights - Imagen generada por IA

Principales problemas detectados al utilizar el Table API de Flink

El uso del Table API de Flink en la gestión de datos de Zalando presentó varios problemas clave que afectaron significativamente el rendimiento y la eficiencia del sistema. Inicialmente, el Table API parecía ser una solución elegante y eficaz que permitía a los desarrolladores escribir consultas SQL para el procesamiento de flujos. Sin embargo, a medida que la complejidad del sistema aumentó, surgieron fricciones considerables.

Uno de los problemas más destacados fue la acumulación excesiva de estado. Cada operador de unión en el Table API mantenía su propia copia de los datos necesarios, lo que resultó en un crecimiento exponencial del tamaño del estado. Cuando se encadenaban múltiples uniones, el tamaño del estado se multiplicaba, alcanzando cifras alarmantes de hasta 240 GB. Esta sobrecarga se tradujo en un consumo de CPU extremo durante los procesos de instantáneas, generando costos y problemas de estabilidad operativa.

Además, el constante manejo de un estado tan grande provocó fallos en las instantáneas y un ciclo interminable de fallos y reinicios de la aplicación, afectando el cumplimiento de los SLA establecidos. Por lo tanto, la conversión de una solución inicialmente eficiente a una pesadilla operativa muestra claramente la necesidad de una reestructuración en la forma en que se manejaban los datos dentro de Flink.

Pasos a seguir con explicaciones detalladas para mejorar el rendimiento con el DataStream API

1. Evaluar el uso del DataStream API

El primer paso consiste en evaluar la posibilidad de migrar del Table API al DataStream API. Esta decisión se debe fundamentar en la creciente acumulación de estado y en la necesidad de un control más granular sobre el procesamiento de eventos.

2. Implementar un Single Stream Union

En lugar de encadenar múltiples uniones que multiplican el estado, se debe unificar todos los flujos de entrada en un solo DataStream. Este enfoque reduce significativamente el tamaño del estado, ya que se elimina la duplicación de datos.

3. Crear un MultiStreamJoinProcessor

Desarrollar un MultiStreamJoinProcessor personalizado con una KeyedProcessFunction. Esta función clave contempla la identificación de eventos únicos mediante un SKU, permitiendo realizar actualizaciones directas en el estado, eliminando la necesidad de albergues temporales de estado múltiple.

4. Optimizar la gestión del estado

Implementar un manejo del estado más eficiente que optimice las actualizaciones. Mantener el estado de manera singular previene la multiplicación de datos al actualizar solo los campos necesarios en la instancia existente de estado.

5. Validar y filtrar eventos

Incorporar un método de filtrado y de deduplicación de eventos que deseche los datos obsoletos o que no aporten valor. Este paso permite mantener la integridad del flujo de trabajo y el estado mientras se mejora la eficiencia en el procesamiento.

Preguntas frecuentes sobre la migración del Table API al DataStream API

¿Por qué debería migrar al DataStream API?

La migración ofrece un control mucho más fino sobre el procesamiento de datos, permitiendo un manejo eficiente del estado y evitando la acumulación excesiva que lleva a errores y altos costos de operación.

¿Cuáles son las principales ventajas del DataStream API en comparación con el Table API?

El DataStream API permite una gestión más eficaz del estado, reduciendo su tamaño y mejorando la estabilidad del sistema. También proporciona mayor control sobre las actualizaciones y el procesamiento en tiempo real.

¿Qué desafíos puedo enfrentar al hacer esta migración?

Los principales desafíos incluyen la necesidad de adaptar la lógica existente de SQL a un enfoque más imperativo y la posible curva de aprendizaje para los desarrolladores al trabajar con un nuevo modelo de programación.

¿Cómo afecta la reducción del estado a los costos de operación en la nube?

Al disminuir el tamaño del estado y mejorar la eficiencia del procesamiento, se pueden reducir los costos asociados a los recursos de CPU y memoria alquilados en servicios como AWS, aunque el ahorro no será directamente proporcional al tamaño del estado reducido.

¿Qué sucede si no migro al DataStream API?

No migrar puede resultar en un crecimiento continuo de los costos de operación y en un aumento en la inestabilidad del sistema, lo que podría culminar en fallos y brechas en el cumplimiento de los SLA.

¿Es posible volver al Table API una vez que se migra?

Es técnicamente viable, pero puede implicar dependencias y reestructuraciones significativas en el código existente, además de las compensaciones en términos de eficiencia y estabilidad.

Nota: Este contenido original ha sido modificado con IA y revisado por un especialista.

Deja una respuesta