es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Es seguro para una aplicación de Flink tener múltiples flujos de datos/clave en un trabajo que comparte la misma fuente y destino de Kafka?

Eres un traductor español que traduce documentos de TI. Traduzca lo siguiente al español. No traduzca el código y los resultados en markdown

introduzca aquí la descripción de la imagen
(Objetivo actualizado)
Mi objetivo en cada flujo de datos es:
– filtrar diferentes mensajes
– tener diferentes ventanas de tiempo definidas para la brecha de sesiones
– consumir del tema y producir en otro tema

Un DAG similar a fan-out -> fan-in.
“`java
var fanoutStreamOne = new StreamComponents(/<em>filtrar, flatmap, etc</em>/);
var fanoutStreamTwo = new StreamComponents(/<em>filtrar, flatmap, etc</em>/);
var fanoutStreamThree = new StreamComponents(/<em>filtrar, flatmap, etc</em>/);
var fanoutStreams = Set.of(fanoutStreamOne, fanoutStreamTwo, fanoutStreamThree)
var source = new FlinkKafkaConsumer<>(…);
var sink = new FlinkKafkaProducer<>(…);</p>

// crea flujos desde la misma fuente al mismo sumidero (usando union())
new streamingJob(source, sink, fanoutStreams).execute();

“`

Solo tengo curiosidad si esto afecta la recuperación/checkpoints o el rendimiento de la aplicación Flink.

¿Alguien ha tenido éxito con esta implementación?

¿Y debería tener la estrategia de marca de agua por adelantado antes de la filtración?

¡Gracias de antemano!

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    La implementación propuesta de DAG “fan-out -> fan-in” no debería afectar negativamente la recuperación/checkpoint ni el rendimiento de la aplicación de Flink. De hecho, el uso de union() para crear flujos a partir de la misma fuente hacia el mismo destino es un enfoque común y recomendado para lograr la paralelización y distribución de la carga entre múltiples instancias de la aplicación.

    Con respecto a la estrategia del watermark, es recomendable definirla antes de filtrar los mensajes. Esto se debe a que el watermark determina el progreso del tiempo de eventos en el flujo de datos y filtrar los mensajes antes de establecer el watermark podría resultar en eventos perdidos o omitidos. Por lo tanto, es importante definir la estrategia del watermark de antemano para garantizar el procesamiento correcto del tiempo de eventos.

    En cuanto al éxito de esta implementación, dependerá de los requisitos y características específicas de los flujos de datos y la aplicación en cuestión. Sin embargo, la implementación propuesta utilizando Flink, Kafka y el patrón de DAG “fan-out -> fan-in” recomendado es un enfoque sólido y puede ser adecuado en muchos casos de uso.

Comments are closed.