Introducción a Kafka Consumer Group

El grupo de consumidores de Kafka es básicamente un número de consumidores de Kafka que pueden leer datos en paralelo de un tema de Kafka. Un grupo de consumidores de Kafka tiene las siguientes propiedades:

  • Todos los consumidores en un grupo tienen el mismo group.id.
  • Cada partición en el tema es leída por un solo consumidor.
  • El número máximo de consumidores es igual al número de particiones en el tema. Si hay más consumidores que particiones, algunos de los consumidores permanecerán inactivos.
  • Un consumidor puede leer desde más de una partición.

Importancia de Kafka Consumer Group

Para una organización minorista, habrá una gran cantidad de Productores que generarán datos a un ritmo enorme. Ahora, para leer un gran volumen de datos, necesitamos múltiples consumidores que se ejecuten en paralelo. Es comparativamente más fácil en el lado del Productor, donde cada Productor genera datos independientemente de los demás. Pero, en el lado del consumidor, si tenemos más de un consumidor leyendo sobre el mismo tema, existe una alta probabilidad de que cada mensaje se lea más de una vez. Kafka resuelve este problema usando Consumer Group. En cualquier caso, solo un consumidor puede leer datos de una partición.

Particiones de Kafka Consumer Group

Supongamos que tenemos un tema de Kafka y que hay 4 particiones en él. Entonces podemos tener los siguientes escenarios:

1. Número de consumidores = Número de particiones

En este caso, cada consumidor leerá los datos de cada partición y este es el caso ideal.

2. Número de consumidores> Número de particiones

En este caso, un consumidor permanecerá inactivo y conducirá a una mala utilización del recurso.

3. Número de consumidores <Número de particiones

En este caso, uno de los consumidores leerá datos de más de una partición.

4. Número de grupo de consumidores> 1

En este caso, el tema está suscrito por más de un grupo de consumidores que atiende a dos aplicaciones diferentes. Las dos aplicaciones pueden ejecutarse independientemente una de la otra.

Ventajas de Kafka Consumer Group

Consumer Group agrega las siguientes ventajas:

  • Escalabilidad: un número de consumidores que leen datos en paralelo definitivamente aumenta la tasa de consumo de datos y hace que el sistema sea capaz de leer un gran volumen de datos.
  • Tolerancia a fallas: supongamos que tenemos un solo consumidor (para leer un volumen de datos no tan alto), ¿qué sucedería si el consumidor falla por alguna razón? Toda la tubería se romperá.
  • Equilibrio de carga: Kafka comparte las particiones de manera justa con cada consumidor, lo que hace que el proceso de consumo de datos sea fluido y eficiente.
  • Reequilibrio: si se agrega un nuevo Consumidor o uno existente se detiene, Kafka reequilibra la carga en los Consumidores disponibles.

¿Cómo Kafka une los dos modelos?

Analicemos primero los dos modelos de mensajería.

1. Colas de mensajes

En este modelo, se envía un flujo de mensajes de un productor a un solo consumidor. Por lo tanto, cada mensaje es de solo lectura una vez y una vez que un consumidor extrae un mensaje, el mensaje se borra de la cola. Un ejemplo típico puede ser emitir un cheque de pago donde cada cheque de pago debe emitirse solo una vez. Además, este modelo no garantiza que los mensajes se entreguen en orden. La escalabilidad del procesamiento de mensajes se limita a un solo dominio.

2. Mensajes de publicación-suscripción

En este modelo, los mensajes publicados por un Productor pueden ser suscritos por más de un Consumidor. El productor y el consumidor están desacoplados en gran medida. Este modelo garantiza que cada consumidor recibirá mensajes sobre un tema en el orden exacto generado por el productor. Un ejemplo típico puede ser un plato de TV que publica diferentes canales como música, películas, deportes, etc., y los consumidores pueden suscribirse a más de un canal. Como hay varios suscriptores a un tema, escalar el procesamiento de las transmisiones es un desafío.

Kafka es muy popular porque, aunque se basa en el modelo de publicación y suscripción, tiene las ventajas de un sistema de cola de mensajes. Como se discutió anteriormente, si tenemos un grupo de consumidores, Kafka se asegura de que cada mensaje en un tema sea de solo lectura una vez por un consumidor (que es similar a un sistema de cola de mensajes). Las ventajas adicionales son que los mensajes son retenidos por los intermediarios (por algún tiempo, lo que los hace tolerantes a fallas) y si tenemos más de un grupo de consumidores, pueden leer mensajes del mismo tema pero procesarlos de manera diferente.

Implicación de casos de uso

Supongamos que tenemos una plataforma en la nube simple donde permitimos las siguientes operaciones a los usuarios:

  • Almacenar archivos en la nube.
  • Ver sus archivos en la nube.
  • Descargue sus archivos de la nube.

Al principio, teníamos una base de usuarios muy pequeña. Queríamos obtener varias estadísticas (por hora) como usuarios activos, número de solicitudes de carga, número de solicitudes de descarga, etc. Para cumplir con los requisitos, configuramos un Kafka Cluster que produce los registros (generados por nuestra aplicación) en un tema y hay una aplicación que consume el tema (usando un consumidor) y luego lo procesa para generar las estadísticas requeridas y finalmente mostrar aquellos en una página web.

A medida que la gente comenzó a gustar nuestros servicios, más personas comenzaron a usarlo, generando así muchos registros por hora. Descubrimos que la aplicación que consume el tema se volvió extremadamente lenta ya que estábamos usando solo un consumidor. Para resolver el problema, agregamos algunos consumidores al grupo y encontramos una mejora significativa en el rendimiento.

Nos encontramos con otro requisito, donde teníamos que escribir los registros en un clúster HDFS y este proceso debería ejecutarse independientemente de la aplicación anterior (Esto se debe a que con un mayor aumento de los datos, estábamos planeando retirar la primera aplicación y obtener todas las estadísticas en el entorno HDFS). Para cumplir con este requisito, desarrollamos otra aplicación que se suscribió al tema utilizando un grupo de consumidores diferente y escribimos los datos en el clúster HDFS.

Artículos recomendados

Esta es una guía para Kafka Consumer Group. Aquí discutimos la importancia del grupo de consumidores Kafka y cómo Kafka une dos modelos junto con su implicación de caso de uso. También puede consultar los siguientes artículos para obtener más información.

  1. Aplicaciones Kafka
  2. ¿Cómo instalar Kafka?
  3. Preguntas de la entrevista de Kafka
  4. Arquitectura HDFS
  5. Diferentes tipos de herramientas Kafka

Categoría: