Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Lesedauer 4 Min.

Apache Kafka: Vier Anti-Patterns und wie man sie verhindert

Der Message Broker Apache Kafka verteilt Schlüssel-Wert-Nachrichten zwischen Anwendungen oder Microservices. Managed-Platform-Anbieter Instaclustr nennt verbreitete Anti-Patterns beim Betrieb von Apache Kafka und wie Entwickler sie verhindern.
Im Herzen von Apache Kafka – dem Kafka-Cluster – arbeiten sogenannte Broker, die die Nachrichten mit Zeitstempel in Topics speichern, zusammenfassen und von denen es immer mehrere Repliken gibt. Diese Verteilung sorgt für Ausfallsicherheit und Skalierbarkeit. Die Topics sind ihrerseits in einzelne Partitionen aufgeteilt. Anwendungen und Microservices, die einen Kafka-Cluster mit Daten füllen, werden Producer genannt, die Empfänger dieser Daten sind die Consumer. Durch die vielen individuell konfigurierbaren Bestandteile von Kafka, ergeben sich auch oft unsinnige Anti-Patterns. Instaclustr nennt vier Beispiele und erklärt, wie Entwickler sie vermeiden.Viel oder wenig #1: Topics
Erfahrungen haben gezeigt, dass es sich negativ auf die Performance der Skalierbarkeit von Apache Kafka auswirkt, wenn Entwickler zu viele Topics auf ihren Kafka-Clustern erstellen. Topics bestehen aus Partitionen, die quasi die Grundeinheit für die Gleichzeitigkeit in Kafka darstellen: Je mehr Partitionen ein Topic hat, desto mehr Consumer kann es versorgen und desto höher ist der Datendurchsatz. Die klare Empfehlung lautet also, statt 1.000 Topics mit 1.000 Partitionen zu erstellen, lieber die Anzahl der Topics reduzieren und die Partitionen auf sie aufzuteilen.Viel oder wenig #2: Partitionen
Die Reduktion von Topics und der damit einhergehende Anstieg von Partitionen auf ihnen verbessert den Datendurchsatz. Dieses Vorgehen lässt sich allerdings nicht unendlich weit treiben und hängt sehr von der Menge an Partitionen und den entsprechend zu vermittelnden Schlüssel-Wert-Nachrichten ab: Erstellen Entwickler 1.000 Partitionen in 1.000 Topics ist das nicht sehr performant. Aber 10.000 Partitionen auf ein Topic zu schieben, ist ebenso wenig sinnvoll. Ein detailliertes Benchmarking hat ergeben, dass der sogenannte Sweetspot typischerweise zwischen 10 und 100 Partitionen pro Topic liegt, sofern Apache ZooKeeper verwendet wird. Ein Update für Apache Kafka brachte vor Kurzem den "KRaft Mode", der ZooKeeper ersetzt und die Verarbeitung von Metadaten beschleunigt. Doch auch dann bricht der Durchsatz bei über 1.000 Topics und Partitionen deutlich ein. Die einzige Lösung sind größere Kafka-Cluster.Viel oder wenig #3: Cluster
Die Frage nach der richtigen Anzahl an Kafka-Clustern hängt sehr davon ab, wie viele Broker zum Einsatz kommen sollen. Es gibt keine finite Anzahl an möglichen Brokern, aber im Sinne der Performance sollten es keinesfalls Millionen sein. Es gibt durchaus Anwendungsfälle, bei denen es sich lohnt etwa 100 Broker einzusetzen. Das sollte allerdings das absolute Maximum sein, da sonst Ausfälle und Downtimes oder Performance-Probleme auftreten. Um dieses Limit nicht auszureizen, setzen viele Entwickler darauf, Kafka-Cluster aufzusplitten.Viel oder wenig #4: Schlüsselwerte
Der große Vorteil von Apache Kafka ist, dass Schlüssel-Wert-Nachrichten in einer festen Reihenfolge verteilt werden. Das funktioniert allerdings nur innerhalb einer Partition: Nachrichten mit dem gleichen Schlüssel werden an die gleiche Partition geliefert, also in der richtigen Reihenfolge. Ist etwa die Kunden-ID der Schlüssel, sendet Apache Kafka alle Nachrichten, die sich auf diesen Kunden beziehen, an die gleiche Partition und stellt sie in der richtigen Reihenfolge zu. Es ist eine Kunst für sich, die richtige Anzahl an Schlüsselwerten zu erstellen, um Probleme wie ungleichmäßige Verteilung auf den Brokern zu vermeiden. Eine Faustregel, die sich durchgesetzt hat, ist, dass Entwickler rund zwanzig Mal mehr Schlüsselwerte benötigen, als es Partitionen und Consumer gibt. Das heißt bei einer Million Partitionen sollten es 20 Millionen Schlüsselwerte sein."Message Broker wie Apache Kafka führen ihre Aufgaben grundsätzlich auch ohne Feintuning zuverlässig aus", erklärt Merlin Walter, Staff Sales Engineer EMEA bei Instaclustr. "Das ist allerdings ein zweischneidiges Schwert, denn was im Kleinen reibungslos funktioniert kann bei entsprechender Skalierung zu einem massiven Leistungseinbruch führen. In der Regel müssen Entwickler immer abwägen, wie viel sie ihren Kafka-Clustern und den auf ihnen laufenden Brokern zumuten können."

Neueste Beiträge

Arbeiten mit Tabellen und KI in Dataverse
Microsoft unterstützt die zentrale Datenmanagement-Lösung Dataverse in Power Apps mit KI-Features.
7 Minuten
6. Aug 2025
Browser-Apps mit Avalonia entwickeln - Avalonia
Klassische UI-Frameworks finden ihren Weg in den Browser
7 Minuten
11. Aug 2025
Müssen Ziele SMART sein?
Wenn es um Ziele im Projektmanagement oder in der Führung einer Organisation geht, stoßen wir schnell und fast ausnahmslos auf das Akronym SMART. Was steckt dahinter, und kann es nicht auch sinnvolle Ziele geben, die nicht SMART sind?
8 Minuten
Miscellaneous

Das könnte Dich auch interessieren

Sicher ist sicher - Azure DevOps Pipelines Security
Als integraler Bestandteil der Entwicklungsumgebung ist Azure DevOps Pipelines oft Ziel von Angriffen. Da ist es gut zu wissen, wo die Schwachstellen des Systems liegen.
14 Minuten
16. Jun 2025
CodeProject.AI Server in neuer Version - Lokaler AI-Server
CodeProject.AI Server (jetzt in Version 2.1.10) ist ein lokal installierter, selbstgehosteter, schneller, kostenloser und Open Source Artificial Intelligence Server für jede Plattform und jede Sprache.
2 Minuten
Für Einsteiger: Backend-Webentwicklung mit .NET - Microsoft
Auf YouTube bietet Microsoft eine Videoserie für Einsteiger in die Backend-Webentwicklung mit .NET.
2 Minuten
13. Feb 2024
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige