Vier Apache Kafka Anti-Patterns – und wie Entwickler sie verhindern

Der Message Broker Apache Kafka ist mittlerweile zum De-facto-Standard geworden, wenn es um die Verarbeitung von Datenströmen geht. Im Grunde stellt die Open-Source-Software die „Poststelle“ dar, die Schlüssel-Wert-Nachrichten zwischen unterschiedlichen Anwendungen oder Microservices verteilt. Managed-Platform-Anbieter Instaclustr nennt verbreitete Anti-Patterns beim Betrieb von Apache Kafka und wie Entwickler sie verhindern. [...]

Foto: talhakhalil/Pixabay

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.

Sie sehen gerade einen Platzhalterinhalt von YouTube. Um auf den eigentlichen Inhalt zuzugreifen, klicken Sie auf die Schaltfläche unten. Bitte beachten Sie, dass dabei Daten an Drittanbieter weitergegeben werden.

Mehr Informationen
Falls Sie Apache-Kafka nicht schon selbst verwenden, hier ein kurzer Refresher dazu worum es sich dabei genau handelt.

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.

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.“

Merlin Walter, Staff Sales Engineer EMEA bei Instaclustr

Mehr Artikel

Gregor Schmid, Projektcenterleiter bei Kumavision, über die Digitalisierung im Mittelstand und die Chancen durch Künstliche Intelligenz. (c) timeline/Rudi Handl
Interview

„Die Zukunft ist modular, flexibel und KI-gestützt“

Im Gespräch mit der ITWELT.at verdeutlicht Gregor Schmid, Projektcenterleiter bei Kumavision, wie sehr sich die Anforderungen an ERP-Systeme und die digitale Transformation in den letzten Jahren verändert haben und verweist dabei auf den Trend zu modularen Lösungen, die Bedeutung der Cloud und die Rolle von Künstlicher Intelligenz (KI) in der Unternehmenspraxis. […]

News

Richtlinien für sichere KI-Entwicklung

Die „Guidelines for Secure Development and Deployment of AI Systems“ von Kaspersky behandeln zentrale Aspekte der Entwicklung, Bereitstellung und des Betriebs von KI-Systemen, einschließlich Design, bewährter Sicherheitspraktiken und Integration, ohne sich auf die Entwicklung grundlegender Modelle zu fokussieren. […]

News

Datensilos blockieren Abwehrkräfte von generativer KI

Damit KI eine Rolle in der Cyberabwehr spielen kann, ist sie auf leicht zugängliche Echtzeitdaten angewiesen. Das heißt, die zunehmende Leistungsfähigkeit von GenAI kann nur dann wirksam werden, wenn die KI Zugriff auf einwandfreie, validierte, standardisierte und vor allem hochverfügbare Daten in allen Anwendungen und Systemen sowie für alle Nutzer hat. Dies setzt allerdings voraus, dass Unternehmen in der Lage sind, ihre Datensilos aufzulösen. […]

Be the first to comment

Leave a Reply

Your email address will not be published.


*