Lab Kafka : topics, producteurs, consommateurs, partitions et offsets dans le navigateur
Ce lab donne à chaque élève son propre Apache Kafka : un seul courtier en mode KRaft, sans ZooKeeper, avec Kafka UI à côté. Il crée un topic de trois partitions, y produit des messages, les relit depuis le début et regarde chaque partition compter ses propres offsets, sans rien installer.
Il est construit à partir de deux images publiques et n’est pas un lab d’attaque : rien n’y est vulnérable. Il est volontairement petit, un courtier avec un tas de 256 Mo, pour apprendre et non pour tenir une charge. La copie du lab n’a aucun accès à internet ni à aucun autre élève.
Ce que les élèves apprennent
Ce qu’est un topic : un journal nommé auquel les producteurs ajoutent à la fin et que les consommateurs lisent à partir de l’endroit de leur choix. Ils voient qu’un topic est découpé en partitions, que chaque partition garde son propre ordre et compte ses offsets à partir de zéro, et que relire depuis le début renvoie des messages que le lecteur n’a jamais vus, ce qui permet à un nouveau consommateur de se mettre à jour. Il convient aux unités d’architecture événementielle, de messagerie et de files, de flux de données et de systèmes distribués ; vérifiez la formulation exacte dans l’unité de votre propre organisme certificateur.
Le lancer dans votre navigateur
Le lab a deux services : kafka, le courtier, et kafka-ui, qui est la page que vous ouvrez et aussi l’adresse à laquelle le terminal du lab écrit. Le terminal a curl et aucun outil en ligne de commande de Kafka : les commandes vont donc à l’API web de Kafka UI, que la page appelle elle-même. Le courtier ne garde rien quand le lab s’arrête : un lab relancé est un Kafka vide.
- Ouvrir la page Conteneur. Ouvrez « Créer » dans la barre et choisissez « Lancer un conteneur ». Tout le monde peut ouvrir la page, et le lab Git et le lab SQL se lancent sans compte. Tous les autres labs demandent un compte gratuit : créez-en un, connectez-vous, puis appuyez sur « Démarrer ».
- Trouver le lab. La carte « Laboratoires d’exemple » liste tous les exemples. Trouvez Apache Kafka: topics, producers and consumers.
- Appuyer sur Démarrer. « Démarrer » le lance tel quel, en un clic. « Modifier le fichier d’abord » ouvre le fichier compose pour que vous puissiez le changer avant de démarrer.
- L’ouvrir. Sur la page du lab, la barre du lab a un lien, Kafka UI. Ouvrez-le, choisissez le cluster lab, puis « Add a Topic » pour créer un topic de trois partitions. Son bouton « Produce Message » envoie un message vers la partition de votre choix, et son onglet Overview liste chaque partition avec son First Offset et son Next Offset. Dans le terminal à côté du lab, curl http://kafka-ui:8080/api/clusters demande le cluster à l’API de cette même page.
Que demander aux élèves de rendre
Une capture d’écran des partitions du topic avec leurs offsets avant et après la production, et des messages relus depuis le début. Pour la compréhension, une ou deux phrases sur la raison pour laquelle chaque partition commence à compter à zéro, pourquoi l’offset d’un message n’est pas sa position dans tout le topic, et ce qui changerait avec plus d’un courtier. Pour un travail plus poussé, demandez un second topic avec un autre nombre de partitions.
Rien n’est noté automatiquement. Les limites du lab valent la peine d’être dites à voix haute : avec un seul courtier il n’y a rien à répliquer, donc la réplication et l’élection d’un leader sont décrites, pas montrées.
Une leçon de base sur ce lab
Kafka Basics est une petite leçon qui se fait dans ce lab, chaque étape étant expliquée et accompagnée d’un bouton Exécuter qui tape sa commande dans le terminal de l’élève. Elle vérifie le cluster, crée un topic de trois partitions, y produit trois messages répartis sur deux d’entre elles, montre les offsets de chaque partition avant et après, puis relit tout depuis le début.
Un compte personnel gratuit la reçoit dans le module Basics, qui se trouve sur « Accueil », chaque établissement peut la copier depuis le dossier Basics de la Bibliothèque, et un nouvel établissement l’a dans un module appelé Lab Basics (Sample). Elle est volontairement petite : elle montre à un enseignant ce qu’est une leçon qui se fait dans un lab, et le lab fait le reste. Copiez-la dans un module à vous pour la modifier.
Le code sur GitHub
Le fichier compose lance deux images publiques, chacune figée sur une version et utilisée telle quelle : Apache Kafka et Kafka UI (toutes deux Apache-2.0). Aucune n’est distribuée par nous. Le courtier reçoit son propre nom sur le réseau du lab par son environnement, et aucun topic n’est créé tout seul : un topic existe parce qu’un élève l’a créé. Le test du dépôt déroule le lab comme un élève, sous les mêmes limites que celles de la plateforme.
En faire un travail
Indiquez dans la tâche quel topic créer et ce qu’il faut rendre.
- Créer le lab. Dans votre module, ajoutez une tâche et choisissez la carte « Lab de conteneurs », puis « Dans un dépôt GitHub ». Indiquez https://github.com/mitsurutech/lab-kafka avec la branche main. Le fichier compose par défaut est compose.yaml. Faites d’abord un fork du dépôt si vous voulez le modifier.
- Publier et l’essayer. « Publier » fige le commit qui vous a été montré : un changement ultérieur dans le dépôt ne modifie donc pas un lab que vous avez déjà proposé. Démarrez d’abord votre propre copie.
- Le distribuer. Attribuez-le comme n’importe quelle tâche, avec une échéance si vous le souhaitez, et indiquez dans la tâche ce qu’il faut faire et ce qu’il faut rendre.
- Noter ce qui est rendu. Ouvrez la copie d’un élève et le travail rendu, notez-le et renvoyez-le avec un motif s’il demande un complément.
Questions fréquentes
- Un élève peut-il utiliser les outils en ligne de commande de Kafka ?
- Pas depuis le terminal du lab. Il a curl et aucun script Kafka, et un terminal ne peut pas lancer une commande dans un autre service. Le lab enseigne donc avec Kafka UI et son API web, qui montrent les mêmes topics, partitions et offsets.
- Les messages sont-ils conservés quand le lab s’arrête ?
- Non. Les données du courtier ne sont pas sauvegardées : arrêter le lab puis le relancer donne un Kafka vide. Demandez aux élèves de faire leurs captures d’écran avant de l’arrêter.
- Le lab Kafka note-t-il le travail automatiquement ?
- Non. Rien n’est noté automatiquement : demandez des captures d’écran des partitions avec leurs offsets et des messages relus depuis le début, avec une phrase sur la raison pour laquelle chaque partition compte à partir de zéro.