Laboratorio de Kafka: topics, productores, consumidores, particiones y offsets en el navegador

Este laboratorio da a cada alumno su propio Apache Kafka: un solo broker en modo KRaft, sin ZooKeeper, con Kafka UI al lado. Crea un topic con tres particiones, produce mensajes, los lee desde el principio y ve cómo cada partición cuenta sus propios offsets, sin instalar nada.

Está hecho con dos imágenes públicas y no es un laboratorio de ataque: no tiene nada vulnerable. Es pequeño a propósito, un broker con un heap de 256 MB, para aprender y no para soportar carga. La copia del laboratorio no tiene salida a internet ni ruta hacia ningún otro alumno.

Qué aprenden los alumnos

Qué es un topic: un registro con nombre al que los productores añaden al final y que los consumidores leen desde donde quieran. Ven que un topic se divide en particiones, que cada partición guarda su propio orden y cuenta sus offsets desde cero, y que leer desde el principio devuelve mensajes que el lector nunca había visto, que es como un consumidor nuevo se pone al día. Encaja en unidades de arquitectura orientada a eventos, mensajería y colas, canalizaciones de datos y sistemas distribuidos; comprueba en la unidad de tu propio organismo certificador la redacción exacta.

Ejecútalo en tu navegador

El laboratorio tiene dos servicios: kafka, el broker, y kafka-ui, que es la página que abres y también la dirección a la que escribe el terminal del laboratorio. El terminal tiene curl y ninguna herramienta de línea de comandos de Kafka, así que los comandos van a la API web de Kafka UI, que es la que usa la propia página. El broker no guarda nada cuando el laboratorio se detiene, así que un laboratorio reiniciado es un Kafka vacío.

  1. Abre la página Contenedor. Abre «Crear» en la barra y elige «Ejecutar un contenedor». Cualquiera puede abrir la página, y el laboratorio de Git y el de SQL se inician sin cuenta. Todos los demás laboratorios necesitan una cuenta gratuita: crea una, inicia sesión y pulsa «Iniciar».
  2. Busca el laboratorio. La tarjeta «Laboratorios de ejemplo» lista todos los ejemplos. Busca Apache Kafka: topics, producers and consumers.
  3. Pulsa «Iniciar». «Iniciar» lo ejecuta tal cual, con una sola pulsación. «Editar el archivo primero» abre el archivo compose para que lo cambies antes de iniciarlo.
  4. Ábrelo. En la página del laboratorio, la barra del laboratorio tiene un enlace, Kafka UI. Ábrelo, elige el clúster lab y usa «Add a Topic» para crear un topic de tres particiones. Su botón «Produce Message» envía un mensaje a la partición que elijas, y su pestaña Overview lista cada partición con su First Offset y su Next Offset. En el terminal junto al laboratorio, curl http://kafka-ui:8080/api/clusters pide el clúster a la API de esa misma página.

Qué pedir a los alumnos que entreguen

Una captura de pantalla de las particiones del topic con sus offsets antes y después de producir, y de los mensajes leídos desde el principio. Para la comprensión, una o dos frases sobre por qué cada partición empieza a contar desde cero, por qué el offset de un mensaje no es su posición en todo el topic, y qué cambiaría con más de un broker. Para un trabajo más exigente, pide un segundo topic con otro número de particiones.

Nada se califica automáticamente. Conviene decir en voz alta los límites del laboratorio: con un solo broker no hay nada que replicar, así que la replicación y la elección de líder se describen, no se muestran.

Una lección básica en este laboratorio

Kafka Basics es una lección breve hecha en este laboratorio, con cada paso explicado y un botón Ejecutar que escribe su comando en el terminal del alumno. Comprueba el clúster, crea un topic de tres particiones, produce tres mensajes repartidos en dos de ellas, muestra los offsets de cada partición antes y después, y lo lee todo desde el principio.

Una cuenta personal gratuita la recibe en el módulo Basics, que está en Inicio, cada centro puede copiarla de la carpeta Basics de la Biblioteca, y un centro nuevo la tiene en un módulo llamado Lab Basics (Sample). Es deliberadamente breve: muestra a un docente lo que es una lección hecha en un laboratorio, y el laboratorio hace el resto. Cópiala en un módulo propio para cambiarla.

El código en GitHub

El archivo compose ejecuta dos imágenes públicas, cada una fijada a una versión y usada sin modificar: Apache Kafka y Kafka UI (ambas Apache-2.0). Nosotros no distribuimos ninguna. Al broker se le dice su propio nombre en la red del laboratorio mediante su entorno, y ningún topic se crea solo: un topic existe porque un alumno lo creó. La prueba del repositorio recorre el laboratorio como un alumno, bajo los mismos límites que aplica la plataforma.

Asígnalo como trabajo

Indica en la tarea qué topic crear y qué entregar.

  1. Crea el laboratorio. En tu módulo añade una tarea y elige la tarjeta «Laboratorio de contenedores», y después «En un repositorio de GitHub». Indica https://github.com/mitsurutech/lab-kafka con la rama main. El archivo compose es el predeterminado, compose.yaml. Haz un fork del repositorio antes si quieres modificarlo.
  2. Publica y pruébalo. «Publicar» fija el commit que te mostraron, así que un cambio posterior en el repositorio no altera un laboratorio que ya has asignado. Inicia primero tu propia copia.
  3. Asígnalo. Asígnalo como cualquier tarea, con una fecha de entrega si quieres, e indica en la tarea qué hacer y qué entregar.
  4. Califica lo entregado. Abre la copia de un alumno y el trabajo que ha entregado, califícalo y devuélvelo con un motivo si necesita más.

Preguntas frecuentes

¿Puede un alumno usar las herramientas de línea de comandos de Kafka?
No desde el terminal del laboratorio. Tiene curl y ningún script de Kafka, y un terminal no puede ejecutar un comando dentro de otro servicio. El laboratorio enseña con Kafka UI y su API web, que muestran los mismos topics, particiones y offsets.
¿Se conservan los mensajes cuando se detiene el laboratorio?
No. Los datos del broker no se guardan, así que detener el laboratorio y volver a iniciarlo da un Kafka vacío. Pide a los alumnos que hagan sus capturas antes de detenerlo.
¿Califica el laboratorio de Kafka el trabajo automáticamente?
No. Nada se califica automáticamente: pide capturas de las particiones con sus offsets y de los mensajes leídos desde el principio, con una frase sobre por qué cada partición cuenta desde cero.