• Themen
  • Was ist Apache Kafka?

Was ist Apache Kafka?

Apache Kafka ist eine beliebte Plattform für Ereignisstreaming zum Erfassen, Verarbeiten und Speichern von Daten zu Streamingereignissen oder Daten ohne eindeutigen Anfang oder eindeutiges Ende. Kafka ermöglicht die Entwicklung einer neuen Generation verteilter Anwendungen, die Milliarden von gestreamten Ereignissen pro Minute verarbeiten können.

Bevor Ereignisstreamingsysteme wie Apache Kafka und Google Cloud Pub/Sub verfügbar waren, erfolgte die Datenverarbeitung normalerweise mit periodischen Batchjobs. Dabei wurden die Rohdaten zuerst gespeichert und später zu willkürlichen Zeitintervallen verarbeitet. Beispielsweise wartete ein Telekommunikationsunternehmen bis zum Ende des Tages, der Woche oder des Monats, ehe es die Millionen von Anrufdatensätzen analysierte und die angesammelten Gebühren berechnete.

Ein Nachteil der Batchverarbeitung ist jedoch, dass sie nicht in Echtzeit erfolgen kann. Immer mehr Organisationen möchten Daten in Echtzeit analysieren, um zeitnahe Geschäftsentscheidungen zu treffen und aktiv zu werden, wenn sich interessante Möglichkeiten bieten. So könnte das oben erwähnte Telekommunikationsunternehmen davon profitieren, Kunden in Echtzeit über Gebühren zu informieren, um die Kundenfreundlichkeit zu erhöhen.

Für derartige Szenarien ist das Ereignisstreaming bestens geeignet. Ereignisstreaming ist ein Prozess, bei dem unendliche Streams von Ereignissen im Moment ihrer Entstehung kontinuierlich verarbeitet werden. Dadurch kann der Zeitwert von Daten erfasst werden und es können Push-basierte Anwendungen erstellt werden, die aktiv werden, sobald etwas Interessantes passiert. Hier einige Beispiele für Ereignisstreaming: die kontinuierliche Analyse von Logdateien, die von kundenseitigen Webanwendungen generiert werden; das Überwachen und Reagieren auf Kundenverhalten beim Besuch einer E-Commerce-Website; die kontinuierliche Erfassung der Kundenstimmung durch Analyse der Clickstream-Daten, die von sozialen Netzwerken erzeugt werden; das Sammeln der von IoT-Geräten (Internet of Things) generierten Telemetriedaten und die Reaktion darauf.

Erfahren Sie mehr über das vollständig verwaltete und integrierte Angebot von Apache Kafka auf Google Cloud, Confluent Cloud.

Übersicht

Kafka verarbeitet Streamingdaten und erfasst genau, was wann passiert. Dieser Datensatz wird als unveränderliches Commit-Log bezeichnet. Unveränderlich deshalb, weil es ergänzt, aber sonst nicht verändert werden kann. Sie können dieses Log abonnieren, d. h. auf die entsprechenden Daten zugreifen. Sie können auch von Echtzeit-Streaminganwendungen und anderen Systemen aus Daten im Log veröffentlichen, also weitere Daten hinzufügen.

Beispielsweise können Sie mit Kafka alle Transaktionsdaten, die von Ihrer Website gestreamt werden, in eine Anwendung einspeisen, die den Verkauf von Produkten in Echtzeit überwacht, ihn mit den vorrätigen Produkten vergleicht, und dann die Just-in-Time-Lageraufstockung aktiviert.

Welche Vorteile bietet Kafka?

Open-Source-Software

Der Quellcode von Kafka ist frei verfügbar. Jeder kann ihn zu beliebigen Zwecken bearbeiten und als eigene Version verfügbar machen. Es fallen keine Lizenzgebühren an und es gelten keine anderen Einschränkungen. Kafka profitiert außerdem von einer weltweiten Community von Entwicklern, die damit arbeiten und Beiträge zur Verbesserung leisten. Deshalb ist für Kafka eine Vielzahl von Connectors, Plug-ins, Überwachungstools und Konfigurationstools verfügbar, deren Zahl ständig steigt.

Skalierung und Geschwindigkeit

Kafka lässt sich nicht nur für immer größere Datenvolumen skalieren, sondern stellt diese Daten auch im gesamten Unternehmen in Echtzeit bereit. Ein weiterer großer Vorteil von Kafka ist, dass es sich um eine verteilte Plattform handelt. Das bedeutet, dass die Verarbeitung auf mehrere –physische oder virtuelle – Rechner verteilt wird. Das bietet zwei Vorteile: Zum einen kann bei einigen Vorgängen horizontal skaliert werden, d. h. es werden mehr Rechner hinzugefügt, wenn mehr Rechenleistung oder Speicher benötigt wird. Zum anderen ist die Lösung zuverlässig, da die Plattform weiterläuft, auch wenn einzelne Rechner ausfallen. Dieses Feature von Kafka kann jedoch sehr schwierig zu verwalten sein. 

Kafka als verwalteter Dienst

Trotz aller Vorteile von Kafka ist die Technologie nicht einfach bereitzustellen. Lokale Kafka-Cluster sind schwierig einzurichten, zu skalieren und in der Produktion zu verwalten. Beim Einrichten der lokalen Infrastruktur zur Ausführung von Kafka müssen Sie Rechner bereitstellen und Kafka konfigurieren. Außerdem müssen Sie das Cluster verteilter Rechner konzipieren, damit die Verfügbarkeit gesichert ist, für die Speicherung und Sicherheit der Daten sorgen, das Monitoring einrichten und Daten sorgfältig skalieren, damit Laständerungen unterstützt werden. Schließlich müssen Sie diese Infrastruktur pflegen, Rechner ersetzen, wenn sie ausfallen, und Routineaufgaben wie Patches und Upgrades durchführen.

Alternativ können Sie Kafka als verwalteten Dienst in der Cloud verwenden. Ein Drittanbieter kümmert sich dann um die Bereitstellung, Erstellung und Pflege der Kafka-Infrastruktur. Sie entwickeln die Anwendungen und führen sie aus. Auf diese Weise können Sie Kafka auch ohne spezifische Fachkenntnisse zur Kafka-Infrastrukturverwaltung einfach bereitstellen. So benötigen Sie weniger Zeit für die Infrastrukturverwaltung und können sich stattdessen Arbeiten widmen, die Ihr Unternehmen voranbringen.

Wie funktioniert Kafka?

Kafka ermöglicht die Verarbeitung von Streamingereignissen mithilfe von fünf Kernfunktionen:

Veröffentlichen

Eine Datenquelle kann einen Stream von Datenereignissen in einem oder mehreren Kafka-Topics – Gruppierungen ähnlicher Datenereignisse – veröffentlichen bzw. platzieren. Beispielsweise können Sie die Daten, die von einem IoT-Gerät wie einem Netzwerkrouter gestreamt werden, nehmen und in einer Anwendung für vorausschauende Wartung veröffentlichen, um zu berechnen, wann der Router ausfallen könnte.

Lesen

Eine Anwendung kann ein oder mehrere Kafka-Topics abonnieren – Daten daraus lesen – und den daraus resultierenden Datenstream verarbeiten. Beispielsweise kann eine Anwendung Daten aus mehreren Social-Media-Streams lesen und analysieren, um den Tenor von Onlinekonversationen über eine Marke zu erkennen.

Verarbeiten

Die Kafka Streams API kann als Streamprozessor fungieren, der eingehende Datenstreams von einem oder mehreren Topics liest und einen ausgehenden Datenstream an ein oder mehrere Topics erzeugt.

Verbinden

Sie können auch wiederverwendbare Producer- oder Consumer-Verbindungen erstellen, die Kafka-Topics mit vorhandenen Anwendungen verknüpfen. Es gibt bereits Hunderte von Connectors, u. a. zu wichtigen Diensten wie Dataproc oder BigQuery.

Speichern

Apache Kafka ermöglicht eine langfristige Speicherung. Kafka kann als „Source Of Truth“ fungieren und Daten auf mehrere Knoten verteilen. Das ermöglicht eine hochverfügbare Bereitstellung innerhalb eines Rechenzentrums oder über mehrere Verfügbarkeitszonen hinweg.

Google Cloud bietet viele Dienste für Big Data und maschinelles Lernen an. Confluent Cloud ist in Google Cloud gehostet und integriert. Dadurch verknüpft es auf transparente Weise die Open-Source-Umgebung von Kafka und diese Google-Dienste. Entwickler können sich so besser auf die Entwicklung innovativer Streaminganwendungen konzentrieren.