kafka-console-producer.sh # Nachrichten produzieren
--bootstrap-server localhost:9092
--topic mytopic # zu welchem Topic?
OPTIONAL mit Keys produzieren (Key:Value)
--property parse.key=true
--property key.separator=:
Nachrichten sind die Nutzdaten, auch als Records bezeichnet. Sie werden als Byte-Arrays gesendet und sind in der Regel in Batches gruppiert.
Producer senden Nachrichten an den Leader einer Partition und wählen die Partition selbst mit Hilfe eines Partitioners aus.
Topics werden verwendet, um Nachrichten eines bestimmten Themas zu bündeln. Sie sind mit Tabellen in einer Datenbank vergleichbar.
Partitionen sind das Rückgrat der Kafka-Performance. Topics werden in Partitionen unterteilt, um Prozesse zu parallelisieren und skalierbar zu machen. Darüber hinaus können Partitionen über Kafka-Broker hinweg repliziert werden, um Ausfallsicherheit und hohe Verfügbarkeit zu gewährleisten.
Consumer empfangen und verarbeiten Nachrichten von Kafka und können aus
Consumer Groups ermöglichen die parallele Verarbeitung und skalierbare Nachrichtenverarbeitung, indem sie Partitionen und Nachrichten unter den Consumern aufteilen. Fällt ein Consumer aus, übernehmen die anderen in der Gruppe dessen Aufgaben, was Ausfallsicherheit gewährleistet.
Broker sind die Kafka-Server. Sie teilen Replicas und Aufgaben gleichmäßig unter sich, was die Leistung verbessert. Fällt ein Broker aus, übernimmt ein anderer, was die Zuverlässigkeit erhöht.
Leader ist der Broker, der für Lese- und Schreiboperationen einer Partition verantwortlich ist. Die Leader sind so gleichmäßig wie möglich auf alle Broker verteilt.
Follower sind die Broker, auf die die Partitionen vom Leader kopiert werden, um die Resilienz zu erhöhen.
Koordinationscluster (KRaft, zuvor ZooKeeper-Ensemble) wird von Kafka zur internen Koordination verwendet.
Nachrichten sind die Nutzdaten, auch als Records bezeichnet. Sie werden als Byte-Arrays gesendet und sind in der Regel in Batches gruppiert.
Producer senden Nachrichten an den Leader einer Partition und wählen die Partition selbst mit Hilfe eines Partitioners aus.
Topics werden verwendet, um Nachrichten eines bestimmten Themas zu bündeln. Sie sind mit Tabellen in einer Datenbank vergleichbar.
Partitionen sind das Rückgrat der Kafka-Performance. Topics werden in Partitionen unterteilt, um Prozesse zu parallelisieren und skalierbar zu machen. Darüber hinaus können Partitionen über Kafka-Broker hinweg repliziert werden, um Ausfallsicherheit und hohe Verfügbarkeit zu gewährleisten.
Consumer empfangen und verarbeiten Nachrichten von Kafka und können aus
Consumer Groups ermöglichen die parallele Verarbeitung und skalierbare Nachrichtenverarbeitung, indem sie Partitionen und Nachrichten unter den Consumern aufteilen. Fällt ein Consumer aus, übernehmen die anderen in der Gruppe dessen Aufgaben, was Ausfallsicherheit gewährleistet.
Broker sind die Kafka-Server. Sie teilen Replicas und Aufgaben gleichmäßig unter sich, was die Leistung verbessert. Fällt ein Broker aus, übernimmt ein anderer, was die Zuverlässigkeit erhöht.
Leader ist der Broker, der für Lese- und Schreiboperationen einer Partition verantwortlich ist. Die Leader sind so gleichmäßig wie möglich auf alle Broker verteilt.
Follower sind die Broker, auf die die Partitionen vom Leader kopiert werden, um die Resilienz zu erhöhen.
Koordinationscluster (KRaft, zuvor ZooKeeper-Ensemble) wird von Kafka zur internen Koordination verwendet.
kafka-console-producer.sh # Nachrichten produzieren
--bootstrap-server localhost:9092
--topic mytopic # zu welchem Topic?
OPTIONAL mit Keys produzieren (Key:Value)
--property parse.key=true
--property key.separator=:
kafka-console-producer.sh \
--bootstrap-server localhost:9092 \
--topic orders
Hello World
Order #12345
Customer request
# Mit Strg+D beenden
kafka-console-producer.sh \
--bootstrap-server localhost:9092 \
--topic user-events \
--property parse.key=true \
--property key.separator=:
user123:{"action": "login", "timestamp": "2024-01-15T10:30:00Z"}
user456:{"action": "purchase", "amount": 99.99}
user789:{"action": "logout", "session_duration": 1800}
# Mit Strg+D beenden
# Für Zuverlässigkeit
acks=all
enable.idempotence=true
# Für Durchsatz
batch.size=524288 # z.B. 512KiB, Standard: 16384 (16KiB), Höhere Werte erhöhen den Durchsatz
linger.ms=5 # Standard: 0, Wartet auf weitere Nachrichten, um ein Batch zu füllen
compression.type=lz4 # Standard: none, Komprimiert die Nachrichten, um den Durchsatz zu erhöhen
# Für Überwachung
client.id=my-producer-app
kafka-console-consumer.sh # Nachrichten konsumieren
--bootstrap-server localhost:9092
--topic mytopic # Von welchem Topic?
OPTIONAL
--from-beginning # von Anfang an lesen
--property print.key=true # Key anzeigen
--group my_group # einer Consumer Group zuweisen
kafka-console-consumer.sh \
--bootstrap-server localhost:9092 \
--topic orders
# Mit Strg+C beenden
kafka-console-consumer.sh \
--bootstrap-server localhost:9092 \
--topic orders \
--from-beginning
# Mit Strg+C beenden
kafka-console-consumer.sh \
--bootstrap-server localhost:9092 \
--topic user-events \
--property print.key=true \
--from-beginning
# Mit Strg+C beenden
kafka-console-consumer.sh \
--bootstrap-server localhost:9092 \
--topic user-events \
--group mygroup \
--from-beginning
# Mit Strg+C beenden
kafka-topics.sh # Topic-Operationen
--bootstrap-server localhost:9092
--list # alle Topics auflisten
--topic mytopic
--create # Topic erstellen
--replication-factor 3 # Wie viele Replikate?
OPTIONAL
--config min.insync.replicas=2 # andere Einstellungen
--describe # Topic beschreiben
--delete # es löschen
kafka-topics.sh \
--bootstrap-server localhost:9092 \
--create \
--topic new-topic \
--partitions 6 \
--replication-factor 1
# Für Zuverlässigkeit
replication-factor=3
min.insync.replicas=2
# Für Durchsatz
partitions = 12 # Standard: 1
# Für Bereinigung
cleanup.policy=delete
retention.hours=168 # Standard: Nachrichten nach 7 Tagen löschen
# Für komprimierte Topics
cleanup.policy=compact
# Für dauerhafte Aufbewahrung
cleanup.policy=delete
retention.hours=-1
Weiterlesen:
kafka-topics.sh \
--bootstrap-server localhost:9092 \
--describe \
--topic new-topic
kafka-topics.sh \
--bootstrap-server localhost:9092 \
--list
kafka-topics.sh \
--bootstrap-server localhost:9092 \
--delete \
--topic new-topic
kafka-consumer-groups.sh # Consumer Groups verwalten
--bootstrap-server localhost:9092
--list # alle Consumer Groups anzeigen
--describe # mehr Info über die Groups
--reset-offsets # Offsets zurücksetzen:
--execute # sonst: Dry run
--to-datetime # Auf eine Zeit zurücksetzen
--to-earliest # Zur ältesten Nachricht
--to-latest # Zur neuesten Nachricht
# mehr lesen: siehe Hilfe-Seite
--delete-offsets # nur Offsets löschen?
--delete # oder die ganze Group?
# worauf bezieht sich der Befehl? (kombinierbar)
--group mygroup # auf eine Group?
--all-groups # auf alle Groups?
--topic mytopic # auf ein Topic?
--all-topics # auf alle Topics?
kafka-consumer-groups.sh \
--bootstrap-server localhost:9092 \
--list
kafka-consumer-groups.sh \
--bootstrap-server localhost:9092 \
--describe \
--group mygroup
kafka-producer-perf-test.sh # Producer Performance Tests
--topic mytopic
--num-records 1000 # Anzahl der zu produzierenden Nachrichten
--throughput -1 # deaktivieren oder MSG/s
--record-size 1000 # Größe in Bytes
ALTERNATIVE
--payload-file myfile.json # eine Nachricht pro Zeile
--producer-props bootstrap.servers=... # Einstellungen
OPTIONAL
--producer.config producer.properties # aus Datei lesen
kafka-producer-perf-test.sh \
--topic performance-test \
--num-records 10000000 \
--record-size 1024 \
--throughput -1 \
--producer-props bootstrap.servers=localhost:9092
kafka-producer-perf-test.sh \
--topic throughput-test \
--num-records 1000000000 \
--record-size 1024 \
--throughput -1 \
--producer-props bootstrap.servers=localhost:9092 \
batch.size=943718 \
linger.ms=10 \
compression.type=lz4
kafka-consumer-perf-test.sh # Consumer Performance Tests
--bootstrap-server localhost:9092
--topic mytopic
--consumer.config consumer.properties # Einstellungen
--messages 1000000 # wie viele Nachrichten lesen?
kafka-consumer-perf-test.sh \
--bootstrap-server localhost:9092 \
--topic performance-test \
--messages 100000 \
--group performance-test
kafka-streams-application-reset.sh # Kafka Streams-Anwendungen zurücksetzen
kafka-leader-election.sh # neuen Partition Leader wählen
kafka-reassign-partitions.sh # Partitionen zwischen Brokern verschieben
kafka-configs.sh # Einstellungen verwalten
kafka-dump-log.sh # Segmente anzeigen
kafka-acls.sh # Berechtigungen verwalten
kcat # Alternative zu kafka-console-producer und consumer
-b localhost:9092
-t mytopic
-C/-P # Consumer oder Producer
kafka-streams-application-reset.sh \
--bootstrap-servers localhost:9092 \
--application-id my-streams-app \
--input-topics input-topic \
--to-datetime 2024-01-01T00:00:00Z
kafka-leader-election.sh \
--bootstrap-server localhost:9092 \
--election-type PREFERRED \
--all-topic-partitions
# Nachrichten produzieren
kcat \
-b localhost:9092 \
-t mytopic \
-P
Hello World
Another message
# Mit Strg+D beenden
# Nachrichten konsumieren
kcat \
-b localhost:9092 \
-t mytopic \
-C