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.

¿Cuál es la mejor manera de pasar los encabezados de Kafka en aplicaciones distribuidas?

Actualmente, mi equipo y yo estamos trabajando en un proyecto en el que desarrollamos una aplicación de procesamiento distribuido de Kafka. Y queremos saber cómo pasar convenientemente las Cabeceras de Kafka a través de estos componentes.

¿Qué significa esto? Por favor, eche un vistazo a la siguiente imagen de muestra:

Nuestro Componente A recibe eventos y genera, en función del contenido, una Cabecera única con información de metadatos sobre el evento. Después de procesar el resultado se pasa a Topic A con la Cabecera generada.

El Componente B y el Componente C reciben estos eventos, comienzan a procesar y escriben sus resultados en Topic B y Topic C. Estos componentes no utilizan las Cabeceras generadas por el Componente A.

Pero, el Componente D lo necesita. Así que el Componente B y el Componente C deben recibir la cabecera y pasarla.

Nuestro sistema en el proyecto es un poco más grande que este ejemplo y es por eso que nos preguntamos: ¿Cuál es la mejor manera de pasar las Cabeceras de Kafka a través de estos componentes? ¿Hay alguna forma automática?

Consideramos los siguientes enfoques:
– No utilizar las Cabeceras de Kafka en absoluto y pasar la información de metadatos a través del cuerpo.
– Uso de interceptores (si eso es incluso posible)

Para su información, utilizamos Spring Boot.

Gracias de antemano,
Michael

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Pasando encabezados Kafka en una aplicación de procesamiento distribuido

    En una aplicación distribuida de procesamiento de Kafka, pasar encabezados Kafka a través de los componentes puede ser un desafío. Como se describe en la arquitectura de ejemplo arriba, el encabezado generado en Componente A debe ser pasado a través de Componente B y Componente C para que Componente D lo pueda usar. Hay dos posibles enfoques para lograr esto:

    1. Pasando información de metadatos a través del cuerpo: En lugar de usar encabezados Kafka, la información de metadatos puede pasarse a través del cuerpo del mensaje. Este enfoque elimina la necesidad de pasar los encabezados a través de varios componentes. Sin embargo, puede afectar el tamaño del mensaje y el rendimiento del sistema.
    2. Uso de interceptores: Los interceptores Kafka pueden usarse para interceptar mensajes antes de que se escriban en Kafka o después de que se lean de Kafka. Usando interceptores, los encabezados pueden ser agregados al mensaje en el productor y recuperados del mensaje en el consumidor. Spring proporciona soporte para interceptores Kafka a través de las interfaces ProductorInterceptor y ConsumidorInterceptor.

    En conclusión, ambos enfoques tienen sus pros y sus contras. La elección entre ellos depende de los requisitos y limitaciones específicos del sistema.

Comments are closed.