Kafka-Lab: Topics, Producer, Consumer, Partitionen und Offsets im Browser
In diesem Lab erhält jede lernende Person ein eigenes Apache Kafka: einen Broker im KRaft-Modus, ohne ZooKeeper, und daneben Kafka UI. Die Lernenden legen ein Topic mit drei Partitionen an, schicken Nachrichten hinein, lesen sie von Anfang an wieder aus und sehen zu, wie jede Partition ihre eigenen Offsets zählt, ohne etwas zu installieren.
Es besteht aus zwei öffentlichen Images und ist kein Angriffs-Lab, es enthält also nichts Verwundbares. Es ist absichtlich klein, ein Broker mit 256 MB Heap, zum Lernen und nicht für Last. Die Lab-Kopie hat keine Verbindung ins Internet und keine zu anderen Lernenden.
Was die Lernenden lernen
Was ein Topic ist: ein benanntes Log, an dessen Ende Producer anhängen und aus dem Consumer ab einer frei gewählten Stelle lesen. Die Lernenden sehen, dass ein Topic in Partitionen aufgeteilt ist, dass jede Partition ihre eigene Reihenfolge hält und ihre eigenen Offsets bei null beginnend zählt, und dass das Lesen von Anfang an Nachrichten liefert, die die lesende Person noch nie gesehen hat. So holt ein neuer Consumer auf. Das Lab passt zu Einheiten über ereignisgesteuerte Architektur, Messaging und Warteschlangen, Datenpipelines und verteilte Systeme; prüfen Sie die Einheit Ihrer eigenen Prüfungsorganisation für den genauen Wortlaut.
Im Browser ausführen
Das Lab hat zwei Dienste: kafka, den Broker, und kafka-ui, die Seite, die Sie öffnen und zugleich die Adresse, an die das Terminal des Labs seine Befehle schickt. Das Terminal hat curl, aber keine Kafka-Kommandozeilenwerkzeuge, daher gehen die Befehle an die Web-API von Kafka UI, die auch die Seite selbst aufruft. Der Broker behält nichts, wenn das Lab stoppt, ein neu gestartetes Lab ist also ein leeres Kafka.
- Container-Seite öffnen. Öffnen Sie in der Leiste „Entwickeln“ und wählen Sie „Einen Container ausführen“. Die Seite kann jeder öffnen, und das Git-Lab und das SQL-Lab starten ohne Konto. Alle anderen Labs brauchen ein kostenloses Konto: Erstellen Sie eines, melden Sie sich an und klicken Sie dann auf „Starten“.
- Lab suchen. Die Karte „Beispiel-Labs“ listet alle Beispiele auf. Suchen Sie Apache Kafka: topics, producers and consumers.
- Auf „Starten“ klicken. „Starten“ führt das Lab unverändert mit einem einzigen Klick aus. „Zuerst die Datei bearbeiten“ öffnet die Compose-Datei, damit Sie sie vor dem Start ändern können.
- Öffnen. Auf der Seite des Labs hat die Lab-Leiste einen Link, Kafka UI. Öffnen Sie ihn, wählen Sie den Cluster lab und legen Sie mit Add a Topic ein Topic mit drei Partitionen an. Mit der Schaltfläche Produce Message senden Sie eine Nachricht an eine Partition Ihrer Wahl, und Overview listet jede Partition mit ihrem First Offset und Next Offset auf. Im Terminal neben dem Lab fragt curl http://kafka-ui:8080/api/clusters die API derselben Seite nach dem Cluster.
Was Lernende abgeben sollen
Einen Screenshot der Partitionen des Topics mit ihren Offsets vor und nach dem Erzeugen von Nachrichten sowie der von Anfang an gelesenen Nachrichten. Für das Verständnis ein bis zwei Sätze dazu, warum jede Partition bei null zu zählen beginnt, warum der Offset einer Nachricht nicht ihre Position im gesamten Topic ist und was mit mehr als einem Broker anders wäre. Für anspruchsvollere Arbeiten verlangen Sie ein zweites Topic mit einer anderen Anzahl von Partitionen.
Nichts wird automatisch bewertet. Die Grenzen des Labs sollte man ausdrücklich nennen: Mit einem Broker gibt es nichts zu replizieren, daher werden Replikation und Leader-Wahl beschrieben, nicht gezeigt.
Eine Basics-Lektion zu diesem Lab
Kafka Basics ist eine kleine Lektion, die in diesem Lab durchgearbeitet wird, mit erklärten Schritten und einer Schaltfläche „Ausführen“, die ihren Befehl in das Terminal der lernenden Person tippt. Sie prüft den Cluster, legt ein Topic mit drei Partitionen an, erzeugt drei Nachrichten für zwei davon, zeigt die Offsets jeder Partition vor und nach dem Erzeugen und liest alles von Anfang an wieder aus.
Ein kostenloses persönliches Konto bekommt die Lektion im Modul Basics auf der Startseite, jede Einrichtung kann sie aus dem Basics-Ordner der Bibliothek kopieren, und eine neue Einrichtung beginnt mit ihr in einem Modul namens Lab Basics (Sample). Sie ist absichtlich klein: Sie zeigt Lehrkräften, was eine in einem Lab durchgearbeitete Lektion ist, und das Lab erledigt den Rest. Kopieren Sie sie in ein eigenes Modul, um sie zu ändern.
Der Code auf GitHub
Die Compose-Datei führt zwei öffentliche Images aus, jedes auf eine Version festgelegt und unverändert: Apache Kafka und Kafka UI (beide Apache-2.0). Keines von beiden wird von uns verteilt. Dem Broker wird sein eigener Name im Netzwerk des Labs über seine Umgebung mitgeteilt, und Topics werden nie von selbst angelegt, ein Topic existiert also, weil eine lernende Person es angelegt hat. Der Test des Repositorys spielt das Lab als lernende Person durch, unter denselben Grenzen, die die Plattform anwendet.
Als Aufgabe stellen
Schreiben Sie in die Aufgabe, welches Topic anzulegen ist und was abgegeben werden soll.
- Lab erstellen. Fügen Sie in Ihrem Modul eine Aufgabe hinzu und wählen Sie die Karte „Container-Lab“, dann „In einem GitHub-Repository“. Geben Sie https://github.com/mitsurutech/lab-kafka mit dem Branch main an. Die Compose-Datei ist standardmäßig compose.yaml. Forken Sie das Repository zuerst, wenn Sie es ändern möchten.
- Veröffentlichen und ausprobieren. „Veröffentlichen“ legt den Commit fest, den Sie gesehen haben. Eine spätere Änderung im Repository verändert also kein Lab, das Sie bereits gestellt haben. Starten Sie zuerst Ihre eigene Kopie.
- Zuweisen. Weisen Sie es wie jede Aufgabe zu, auf Wunsch mit Fälligkeitsdatum, und schreiben Sie in die Aufgabe, was zu tun ist und was abgegeben werden soll.
- Abgaben bewerten. Öffnen Sie die Kopie einer lernenden Person und die abgegebene Arbeit, bewerten Sie sie und geben Sie sie mit einer Begründung zur Überarbeitung zurück, wenn mehr nötig ist.
Häufige Fragen
- Können Lernende die Kafka-Kommandozeilenwerkzeuge verwenden?
- Nicht im Terminal des Labs. Es hat curl und keine Kafka-Skripte, und ein Terminal kann keinen Befehl in einem anderen Dienst ausführen. Das Lab arbeitet stattdessen mit Kafka UI und seiner Web-API, die dieselben Topics, Partitionen und Offsets zeigen.
- Bleiben die Nachrichten erhalten, wenn das Lab gestoppt wird?
- Nein. Die Daten des Brokers werden nicht gespeichert, nach dem Stoppen und erneuten Starten ist Kafka also leer. Bitten Sie die Lernenden, ihre Screenshots zu machen, bevor sie stoppen.
- Bewertet das Kafka-Lab die Arbeit automatisch?
- Nein. Nichts wird automatisch bewertet. Verlangen Sie daher Screenshots der Partitionen mit ihren Offsets und der von Anfang an gelesenen Nachrichten, dazu einen Satz, warum jede Partition bei null zu zählen beginnt.