Lässt es sich mit cremefarbenem Papier, einer Tönung, mehr Kontrast oder größerer Schrift besser lesen? Wählen Sie Ihre Farben und Ihre Schrift, einmalig für alle Seiten.

Kostenlose Lektion

Kafka-Grundlagen

Die ganze Lektion steht hier zum Lesen. Erstellen Sie ein kostenloses Konto, um sie in einem Live-Lab auszuführen.

Container-Lab7 Min. Lesezeit7 Befehle

Was du machst

Kafka speichert Nachrichten in einem Topic. Das ist ein Log: Producer hängen hinten etwas an, und Consumer lesen ab einer beliebigen Stelle. Ein Topic ist in Partitionen unterteilt, und jede Nachricht bekommt einen Offset, ihre Nummer in der eigenen Partition, gezählt ab null. Hier legst du ein Topic an, fügst drei Nachrichten hinzu und liest sie von Anfang an wieder aus.

Bevor du anfängst

Notiz

Klicke oben in der Leiste dieser Lektion auf Lab starten und warte, bis dort steht, dass es läuft. Zuerst startet der Broker und danach die Seite, deshalb dauert der erste Start etwa eine Minute. Jede Schaltfläche Ausführen unten tippt ihren Befehl ins Terminal deines Labs, einen nach dem anderen in derselben Sitzung. Wenn du zuschauen oder eigene Befehle tippen willst, klicke in der Leiste auf Terminal öffnen (neuer Tab).

1. Lege ein Topic an

Dieser Befehl bittet die Web-API hinter Kafka UI um ein Topic namens orders mit drei Partitionen. Er gibt 200 aus, das Wort des Webs für „erledigt“, in einer eigenen Zeile: \n nach %{http_code} beendet die Zeile. Der zweite Befehl listet dann die Partitionen auf: "partition":0, "partition":1 und "partition":2, jede mit "offsetMax":0. Diese Zahl ist der nächste Offset, den die nächste Nachricht bekommt. Alle drei Partitionen sind also leer.

Befehl
curl -s -X POST -H "Content-Type: application/json" -d '{"name":"orders","partitions":3,"replicationFactor":1,"configs":{}}' http://kafka-ui:8080/api/clusters/lab/topics -o /dev/null -w "%{http_code}\n"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Befehl
curl -s http://kafka-ui:8080/api/clusters/lab/topics/orders | grep -o '"partition":[0-9]*\|"offsetMax":[0-9]*'

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

2. Erzeuge drei Nachrichten

Jeder Befehl fügt eine Nachricht hinzu und gibt 200 aus. Die ersten beiden gehen an Partition 0 und die dritte an Partition 1. Ein Befehl muss eine Partition nennen. Auf der Seite selbst macht die Schaltfläche Produce Message am Topic dasselbe.

Befehl
curl -s -X POST -H "Content-Type: application/json" -d '{"partition":0,"key":"alice","value":"coffee","headers":{},"keySerde":"String","valueSerde":"String"}' http://kafka-ui:8080/api/clusters/lab/topics/orders/messages -w "%{http_code}\n"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Befehl
curl -s -X POST -H "Content-Type: application/json" -d '{"partition":0,"key":"alice","value":"tea","headers":{},"keySerde":"String","valueSerde":"String"}' http://kafka-ui:8080/api/clusters/lab/topics/orders/messages -w "%{http_code}\n"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Befehl
curl -s -X POST -H "Content-Type: application/json" -d '{"partition":1,"key":"bob","value":"cake","headers":{},"keySerde":"String","valueSerde":"String"}' http://kafka-ui:8080/api/clusters/lab/topics/orders/messages -w "%{http_code}\n"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

3. Sieh dir die Offsets an und lies alles zurück

Führe den ersten Befehl noch einmal aus: Partition 0 zeigt jetzt "offsetMax":2, Partition 1 zeigt 1, und Partition 2 zeigt weiter 0. Jede Partition zählt für sich. Der zweite Befehl liest das Topic von Anfang an, so wie es ein neuer Consumer tut. Er gibt zu jeder Nachricht Partition und Offset neben dem Wert aus: coffee ist Partition 0, Offset 0, tea ist Partition 0, Offset 1 und cake ist Partition 1, Offset 0. Sie kommen neueste zuerst an, deshalb steht cake vor coffee. Die Reihenfolge bestimmen die Offsets.

Befehl
curl -s http://kafka-ui:8080/api/clusters/lab/topics/orders | grep -o '"partition":[0-9]*\|"offsetMax":[0-9]*'

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Befehl
curl -s -N "http://kafka-ui:8080/api/clusters/lab/topics/orders/messages/v2?seekType=BEGINNING&limit=10" | grep -o '"partition":[0-9]*,"offset":[0-9]*\|"value":"[a-z]*"'

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Für Lehrkräfte

Tipp

Diese Lektion ist ein kleines Beispiel für eine Lektion, die in einem Lab abläuft: Die Schritte und die Schaltflächen „Ausführen“ sind die Lektion, und das Lab ist die eigene Kopie jeder lernenden Person. Das Lab besteht aus zwei Diensten, einem Broker und der Seite, die ihn ausliest. Nichts hier bewertet sich selbst: Die Lernenden geben die Offsets davor und danach ab, dazu einen Satz, warum jede Partition bei null beginnt. Der Broker behält nichts, wenn das Lab endet. Kopiere es in dein eigenes Modul und ändere es, oder baue im Lektionseditor über das Menü Lab ein neues von Grund auf.

Über dieses Lab und seinen Quellcode: Kafka-Lab: Topics, Producer, Consumer, Partitionen und Offsets im Browser

Sie unterrichten eine Klasse? Weisen Sie diese Lektionen Ihren Lernenden zu, mit Bewertung und einem Lab für jede lernende Person.