Was ist Apache Kafka?

14.03.2022 von Martin Heller
Apache Kafka ist eine der ausgereiftesten Plattformen für Event Streaming. Das müssen Sie wissen.
Geht es um Event Streaming, führt kaum ein Weg an Apache Kafka vorbei. Lesen Sie, was die Plattform ausmacht.
Foto: shuttersv - shutterstock.com

Alle Daten in einem Data Warehouse zu speichern und über Nacht per Batch-Prozess zu analysieren reicht nicht mehr aus, um ein Business oder einen Prozess zeitnah zu monitoren und zu managen. Stattdessen empfehlen sich Realtime-Analysen von Datenströmen und das Speichern der wirklich relevanten Daten für eine nachgelagerte Analyse. Apache Kafka, das ursprünglich bei LinkedIn entwickelt wurde, ist eine der ausgereiftesten Plattformen für Event-Streaming. Zu den Ergänzungen für Kafka gehören:

Zu den Kafka-Alternativen zählen:

Apache Kafka - Definition

Apache Kafka ist eine verteilte, quelloffene Java/Scala-Event-Streaming-Plattform für High-Performance-Datenpipelines, Streaming-Analysen, Datenintegration und unternehmenskritische Anwendungen. Kafka-Events werden in Topics organisiert und dauerhaft gespeichert.

Kafka verfügt über fünf Kern-APIs:

Wenn Sie Stream Processing implementieren möchten, das für die Streams-API zu komplex ist, können Sie Kafka mit Apache Samza (dazu später mehr) oder Apache Flink integrieren. Ein Nachteil von Apache Kafka ist, dass es schwierig sein kann, große Kafka-Cluster einzurichten. Dieses Problem beheben kommerzielle Cloud-Implementierungen von Apache Kafka, wie beispielsweise Confluent Cloud und Amazon Managed Streaming for Apache Kafka - allerdings hat das auch seinen Preis.

Apache Kafka - Architektur

Kafka ist ein verteiltes System, das aus Servern und Clients besteht, die über ein TCP-Netzwerkprotokoll kommunizieren. Es lässt sich auf Bare-Metal-Hardware, virtuellen Maschinen und Containern sowie On-Premises wie auch in Cloud-Umgebungen einsetzen.

Server: Kafka wird als Cluster betrieben, das aus einem oder mehreren Servern besteht, die sich wiederum über mehrere Rechenzentren oder Cloud-Regionen erstrecken können. Einige dieser Server bilden die Speicherebene, genannt "Brokers". Andere Server führen Kafka Connect aus, um kontinuierlich Daten als Event-Ströme zu importieren und zu exportieren und Kafka mit Ihren bestehenden Systemen wie relationalen Datenbanken sowie anderen Kafka-Clustern zu integrieren. Um geschäftskritische Use Cases umsetzen zu können, ist ein Kafka-Cluster skalierbar und fehlertolerant angelegt: Fällt einer der Server aus, übernehmen die anderen dessen Arbeit und gewährleisten einen kontinuierlichen Betrieb ohne Datenverlust.

Clients: Mit Kafka-Clients können Sie verteilte Anwendungen und Microservices erstellen, die Ereignisströme parallel und fehlertolerant lesen, schreiben und verarbeiten - selbst wenn es zu Netzwerkproblemen oder Maschinenausfällen kommt. Kafka wird mit einigen Clients ausgeliefert, die durch viele weitere aus der Kafka-Community ergänzt werden. Kafka-Clients gibt es für Java und Scala, einschließlich der übergeordneten Kafka-Streams-Bibliothek, sowie für Go, Python, C/C++, viele andere Programmiersprachen und REST-APIs.

Apache Samza - im Zusammenspiel mit Kafka

Apache Samza ist ein quelloffenes, Scala/Java-basiertes, verteiltes Stream-Processing-Framework, das bei LinkedIn in Verbindung mit Kafka entwickelt wurde. Mit Samza lassen sich zustandsbehaftete Anwendungen erstellen, die Daten in Echtzeit aus mehreren Quellen verarbeiten - einschließlich Apache Kafka. Zu den wesentlichen Merkmalen von Samza gehören:

Apache Kafka - Confluent und Hyperscaler

Confluent ist eine kommerzielle Version von Apache Kafka, die sowohl On-Premises als auch in der Cloud angeboten wird. Confluent Cloud wurde von Grund auf neu entwickelt und als Serverless, Elastic, Cloud-nativer Managed Service konzipiert. Confluent läuft auf Amazon Web Services, Microsoft Azure und Google Cloud Platform.

Apache Kafka - Use Cases

Tencent nutzte Kafka zum Aufbau von Datenpipelines für die regionsübergreifende Log-Ingestion, für maschinelle Lernplattformen und für die asynchrone Kommunikation zwischen Microservices. Weil Tencent einen höheren Durchsatz und eine geringere Latenz benötigte, als sie von einem einzelnen Kafka-Cluster erreicht werden kann, wurden die Kafka-Cluster in eine Proxy-Schicht verpackt. So wurde ein föderiertes Kafka-Design geschaffen, das mehr als zehn Billionen Nachrichten pro Tag mit einer maximalen Cluster-Bandbreite von 240 Gb/s verarbeitet.

Microsoft Azure hat einen Prototyp einer End-to-End-Lösung für die IoT-Datenverarbeitung mit Confluent Cloud, MQTT-Brokern und Konnektoren, dem analytischen Speicher von Azure Cosmos DB, Azure Synapse Analytics und Azure Spring Cloud erstellt.

ACERTUS hat mit Confluent Cloud, ksqlDB (einer SQL-Datenbank, die auf Streaming-Daten spezialisiert ist), AWS Lambda und einem Snowflake Data Warehouse ein End-to-End-System für die Verwaltung von Fahrzeugflotten aufgebaut. Laut ACERTUS hat dieses System im ersten Jahr mehr als zehn Millionen Dollar Umsatz generiert. (fm)

Dieser Beitrag basiert auf einem Artikel unserer US-Schwesterpublikation Infoworld.