Apache Kafka en Microservices ASP NET Core
Aprende que es Apache Kafka y como se integra a los Microservicios y Aplicaciones .NET
En visperas del lanzamiento de nuestro nuevo curso de Microservices con NET Core 9 utilizando el Event Drive Architecture, en este post te explicaremos que es Apache Kafka, origenes y su importancia en el desarrollo de aplicaciones empresariales con .NET
Registrate ahora en nuestra comunidad membresia de Developers .NET Core
https://www.vaxidrez.com/bundles/membresia
👉Que es Apache Kafka?
Apache Kafka es una plataforma distribuida de transmision de datos que permite publicar, almacenar y distribuir un flujo de registros en tiempo real.
En si es un sistema de mensajeria orientado a aplicaciones empresariales.
Fue creado como un proyecto interno de LinkedIn, pero rapidamente fue adoptado por la comunidad de developers hasta convertirse en la actualidad en una de las tecnologias mas usadas en el mundo.
👉Que son Kafka Messages, Topics y Partitions?
1️⃣ La unidad basica de data en la arquitectura Kafka es un Message.
Para entenderlo mejor, puedes imaginar a un message como si fuera un record de una tabla de una base de datos, con una caracteristica clave que este message/record es transmitido por kafka como un array de bytes.
2️⃣ Cada Message pertenece a un especifico Topic, es decir cuando un Message es generado, este Message va dirigido siempre a un especifico Topic.
Una vez mas usemos una analogia didactica, si para ti un Message es como si fuera un record, entonces un Topic vendria a ser lo equivalente a una Tabla de una base de datos.
3️⃣ Respecto de las Partitions, debes saber que los Topics estan hechos a partir de multiples Partitions, esta caracterista le permite a Kafka mejorar la redundacia de datos y hacer que los Topics sean horizontalmente escalables, es decir que puedas agregar dinamicamente Topics a Kafka en demanda, en funcion a tus necesidades.
👉Que son los Producers y Consumers?
1️⃣ Se le llama Producer al componente que crea los Messages, y los envia a un especifico Topic.
Ademas un Producer es encargado de balancear la carga de Messages entre las diferentes Partitions que puede tener un Topic.
2️⃣ Se le llama Consumer, al componente que lee los Messages de un especifico Topic.
Puede darse el caso que uno o varios Consumers trabajen juntos como un Grupo de Consumers para leer mensajes de un especifico Topic.
Una instancia de un Consumer, siempre debe estar atado tambien a una especifica Partition.
En otras palabras, un Partition es propiedad o pertenece a una instancia de un Consumer.
👉Que es un Kafka Broker y un Cluster?
1️⃣ Un unico Kafka Server es conocido como un Broker.
Un Broker puede manejar/procesar miles de Partitions y millones de Messages por segundo.
Para entenderlo mejor, puedes imaginar que un Broker es como si fuera un puente, donde en un extremo del puente tenemos un Producer, y del otro extremo del puente tenemos a un Consumer.
Entonces lo que hace un Broker por un lado es recibir Messages que son creados por el Producer y por el otro lado manejar y consultar los requests que hace el Consumer para leer los Messages.
2️⃣ Pero un Kafka Broker formar parte de un Kafka Cluster.
Un Kafka Cluster esta conformado por muchos brokers e inyecta funcionalidades de replicacion entre ellos.
Es decir cada Partition es replicada en todos los Brokers que forman parte del Cluister, esto con el objetivo de mantener una alta redundancia y disponibilidad de servicio, en caso de que algun servidor o Broker de Kafka por algun motivo deje de funcionar.
👉Usos de Apache Kafka?
1️⃣ Data Streaming, Kafka te permite procesar y analizar la data en tiempo real, asegurandose que tu aplicacion este siempre actualizada.
2️⃣ Message Queue, una de las principales caracteristicas de Apache Kafka es su alto performance y escalabilidad en la comunicacion entre diferentes componentes de tu sistema.
3️⃣ Web Activity Tracker, Quieres saber que hacen tus usuarios en tiempo real? Kafka puede hacerlo!, rastreando todas las actividades de todos tus usuarios en tiempo real, de esta forma puedes conocer los gustos y preferencias de los usuarios.
4️⃣ Data Replication, Puedes estar tranquilo, Kafka permite replicar tu data en multiples servidores del cluster, asegurando una alta disponibilidad del servicio.
5️⃣ Requerimientos de Mensajeria en sistemas distribuidos como notificaciones de tipo email, mobile para usuarios finales.
6️⃣ Almacenamiento y administracion de Metrics collection y logging.
Aqui te dejo un diagrama de Nikki Siapno muy explicativo sobre las principales caracteristicas de Kafka.
Si quieres aprender mas de Desarrollo y Arquitectura de Sistemas con .NET, puedes registrarte en nuestra comunidad:
https://www.vaxidrez.com/bundles/membresia
Subscribete a mis redes en :
Twitter : https://x.com/VaxiDrez
Youtube: https://youtube.com/@vaxidrez
Facebook: https://facebook.com/vaxi.drez.tech
Nuestra proxima entrega hablaremos de Event Drive Architecture y Microservices en .NET CoreSubscribete a mis redes sociales: