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.

Tratando de comprender Apache Kafka como un microservicio. Aún confundido/a.

Estoy aprendiendo sobre Kafka y me intriga cómo debería existir un cliente de Kafka en una arquitectura de microservicios. Quiero que Kafka registre información importante y facilite una reacción automática a esa información de manera apropiada.

Mi pregunta es ¿cómo debería existir Kafka con el backend como un microservicio?

  1. Cliente independiente: El cliente de Kafka (productor/consumidor) existe de forma independiente. Expone una API para que el frontend realice solicitudes HTTP (POST, PUT) y envíe datos. Los datos se convierten en eventos y se producen en el clúster de Kafka mediante el cliente de Kafka. El consumidor también reside aquí y realizará llamadas reactivas a un backend separado cuando sea necesario.

  2. Una capa en el backend: Cuando el frontend realiza una solicitud HTTP (POST, PUT) al backend, el “controlador REST” en el backend analiza qué datos se envían y, si es necesario, los produce en el clúster de Kafka. El consumidor también reside aquí y reacciona a eventos nuevos internamente con otros servicios en el backend.

  3. Productor en el frontend, consumidor en el backend: El frontend (React.js, Vue.js, etc.) tiene un cliente de Kafka que produce eventos de información importante que requiere registro. El cliente de Kafka consumidor también existe en el backend y reacciona a eventos internamente con otros servicios. El backend también expone una API para solicitudes no relacionadas con Kafka. ¿Quizás una combinación de esto? ¿O todas estas opciones están equivocadas?

Hasta ahora, Confluent ha sido de gran ayuda, pero creo que me falta algo importante para unir todas las piezas.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Como experto en TI especializado en Java, Apache Kafka, Apache Kafka Streams, Spring Kafka y Confluent Platform, sugeriría que no hay una respuesta correcta única a esta pregunta. El enfoque más adecuado depende de los requisitos específicos del sistema y la arquitectura en su lugar. Sin embargo, aquí hay algunas recomendaciones que pueden ayudar:

    1. Si el objetivo principal es mantener un registro de información importante, entonces usar un cliente independiente para producir eventos en Kafka sería la solución más sencilla. Este enfoque requeriría un esfuerzo mínimo de integración y proporcionaría una clara separación de responsabilidades entre los servicios frontend y backend. El servicio backend podría tener un consumidor para reaccionar a nuevos eventos y realizar acciones según sea necesario.
    2. Si el servicio backend necesita tener más control sobre cuándo y qué datos se envían a Kafka, entonces tener una capa en el backend sería un mejor enfoque. Esto permitiría que el servicio backend inspeccione las solicitudes entrantes y determine si deben registrarse en Kafka. El servicio backend también podría tener un consumidor para reaccionar a nuevos eventos y realizar acciones según sea necesario.

    3. Si el frontend necesita generar eventos en Kafka, entonces será necesario tener un cliente de Kafka en el frontend. Este enfoque podría permitir una generación de registros más en tiempo real a medida que ocurren los eventos. El servicio backend tendría entonces un consumidor para reaccionar a nuevos eventos y realizar acciones según sea necesario.

    En última instancia, la decisión sobre cómo incluir Kafka en una arquitectura de microservicios depende de los requisitos específicos del sistema. Se pueden utilizar múltiples enfoques según la complejidad y escalabilidad requeridas. Es importante considerar los compromisos entre simplicidad, rendimiento y mantenibilidad al decidir sobre un enfoque.

Comments are closed.