Was ist Kafka?
Apache Kafka ist ein verteilter Datenspeicher, der für das Aufnehmen und Verarbeiten von Streaming-Daten in Echtzeit optimiert ist. Bei Streaming-Daten handelt es sich um Daten, die kontinuierlich von Tausenden von Datenquellen erzeugt werden, die die Datensätze in der Regel gleichzeitig senden. Eine Streaming-Plattform muss diesen ständigen Zustrom von Daten bewältigen und die Daten sequentiell und inkrementell verarbeiten.
Kafka bietet seinen Benutzern drei Hauptfunktionen:
- Datensatz-Ströme veröffentlichen und abonnieren
- Effektives Speichern von Datensatz-Strömen in der Reihenfolge, in der Datensätze generiert wurden
- Datenströme in Echtzeit verarbeiten
Kafka wird hauptsächlich verwendet, um Streaming-Datenpipelines und Anwendungen in Echtzeit zu erstellen, die sich an die Datenströme anpassen. Es kombiniert Nachrichten-, Speicher- und Stream-Verarbeitung, um die Speicherung und Analyse von historischen Daten und Echtzeit-Daten zu ermöglichen.
Wofür wird Kafka verwendet?
Kafka wird verwendet, um Echtzeit-Streaming-Datenpipelines und Echtzeit-Streaming-Anwendungen zu erstellen. Eine Datenpipeline verarbeitet und verschiebt Daten zuverlässig von einem System in ein anderes und eine Streaming-Anwendung ist eine Anwendung, die Datenströme konsumiert. Wenn Sie z. B. eine Datenpipeline erstellen möchten, die Benutzeraktivitätsdaten aufnimmt, um die Nutzung Ihrer Website in Echtzeit zu verfolgen, wird Kafka zum Einlesen und Speichern von Streaming-Daten verwendet, während die Anwendungen, die die Datenpipeline betreiben, Lesezugriffe erhalten. Kafka wird auch häufig als Message-Broker-Lösung verwendet. Dabei handelt es sich um eine Plattform, die die Kommunikation zwischen zwei Anwendungen verarbeitet und vermittelt.
Wie funktioniert Kafka?
Kafka kombiniert zwei Messaging-Modelle, Queuing und Publish-Subscribe, um den Verbrauchern die jeweils wichtigsten Vorteile zu bieten. Warteschlangen ermöglichen die Verteilung der Datenverarbeitung auf viele Verbraucher-Instances, wodurch sie hochgradig skalierbar ist. Herkömmliche Warteschlangen sind jedoch nicht für mehrere Abonnenten verfügbar. Beim Publish-Subscribe-Ansatz werden mehrere Abonnenten verwendet, aber da jede Nachricht an jeden Abonnenten geht, kann sie nicht verwendet werden, um Arbeit auf mehrere Arbeitsprozesse zu verteilen. Kafka verwendet ein partitioniertes Protokoll-Modell, um diese beiden Lösungen zusammenzufügen. Ein Protokoll ist eine geordnete Abfolge von Datensätzen, und diese Protokolle sind in Segmente oder Partitionen unterteilt, die verschiedenen Abonnenten entsprechen. Das bedeutet, dass es mehrere Abonnenten für dasselbe Thema geben kann und jedem eine Partition zugewiesen wird, um eine höhere Skalierbarkeit zu ermöglichen. Schließlich bietet Kafkas Modell Wiederspielbarkeit, sodass mehrere unabhängige Anwendungen, die aus Datenströmen lesen, unabhängig voneinander mit ihrer eigenen Geschwindigkeit arbeiten können.
Queueing
Publish-Subscribe
Was sind die Vorteile von Kafkas Ansatz?
Skalierbar
Das partitionierte Protokollmodell von Kafka ermöglicht die Verteilung von Daten auf mehrere Server, wodurch sie über das hinaus skalierbar sind, was auf einen einzelnen Server passen würde.
Schnell
Kafka entkoppelt Datenströme, so dass die Latenzzeit sehr gering ist, was es extrem schnell macht.
Beständigkeit
Partitionen werden auf viele Server verteilt und repliziert, und die Daten werden alle auf die Festplatte geschrieben. Dies trägt zum Schutz vor Serverausfällen bei und macht die Daten sehr fehlertolerant und beständig.
Wie integriert Kafkas Architektur verschiedene Modelle?
Kafka schafft Abhilfe gegen die beiden unterschiedlichen Modelle, indem es Aufzeichnungen zu unterschiedlichen Themen veröffentlicht. Jedes Thema hat ein partitioniertes Protokoll. Dabei handelt es sich um ein strukturiertes Commit-Protokoll, das alle Datensätze in der richtigen Reihenfolge aufzeichnet und neue in Echtzeit anfügt. Diese Partitionen werden auf mehrere Server verteilt und repliziert, was eine hohe Skalierbarkeit, Fehlertoleranz und Parallelität ermöglicht. Jedem Verbraucher wird eine Partition im Thema zugewiesen, sodass mehrere Abonnenten zugelassen sind und gleichzeitig die Reihenfolge der Daten beibehalten wird. Durch die Kombination dieser Messaging-Modelle bietet Kafka die Vorteile von beiden. Kafka fungiert auch als sehr skalierbares und fehlertolerantes Speichersystem, indem es alle Daten auf die Festplatte schreibt und repliziert. Standardmäßig speichert Kafka Daten auf der Festplatte, bis der Speicherplatz aufgebraucht ist. Der Benutzer kann jedoch auch ein Aufbewahrungslimit festlegen. Kafka hat vier APIs:
- Producer-API: Wird verwendet, um einen Stream von Datensätzen zu einem Kafka-Thema zu veröffentlichen.
- Consumer-API: Wird verwendet, um Themen zu abonnieren und ihre Datenströme zu verarbeiten.
- Streams-API: Ermöglicht es Anwendungen, sich wie Stream-Prozessoren zu verhalten, die einen Eingabestream von Themen aufnehmen und in einen Ausgabestream umwandeln, der in verschiedene Ausgabethemen fließt.
- Connector-API: ermöglicht es Benutzern, das Hinzufügen einer weiteren Anwendung oder eines Datensystems zu ihren aktuellen Kafka-Themen nahtlos zu automatisieren.
Was sind die Unterschiede zwischen Apache Kafka und RabbitMQ?
RabbitMQ ist ein Message Broker für Open Source, der einen Messaging-Warteschlangenansatz verwendet. Warteschlangen werden über einen Cluster von Knoten verteilt und optional repliziert, wobei jede Nachricht nur an einen einzelnen Verbraucher zugestellt wird.
Merkmale |
Apache Kafka |
RabbitMQ |
Architektur |
Kafka verwendet ein partitioniertes Protokoll-Modell, das Messaging-Queue- und Publish-Subscribe-Ansätze kombiniert. |
RabbitMQ verwendet eine Messaging-Warteschlange. |
Skalierbarkeit |
Kafka bietet Skalierbarkeit, indem Partitionen auf verschiedene Server verteilt werden können. |
Erhöhen Sie die Anzahl der Verbraucher in der Warteschlange, um die Verarbeitung auf die konkurrierenden Verbraucher auszudehnen. |
Nachrichtenaufbewahrung |
Richtlinienbasiert, z. B. können Nachrichten einen Tag lang gespeichert werden. Der Benutzer kann dieses Aufbewahrungsfenster konfigurieren. |
Bestätigungsbasiert, d. h. Nachrichten werden gelöscht, sobald sie konsumiert werden. |
Mehrere Verbraucher |
Mehrere Verbraucher können dasselbe Thema abonnieren, da Kafka zulässt, dass dieselbe Nachricht für ein bestimmtes Zeitfenster wiederholt wird. |
Mehrere Verbraucher können nicht alle dieselbe Nachricht erhalten, da Nachrichten entfernt werden, wenn sie konsumiert werden. |
Replikation |
Themen werden automatisch repliziert, aber der Benutzer kann Themen manuell so konfigurieren, dass sie nicht repliziert werden. |
Nachrichten werden nicht automatisch repliziert, aber der Benutzer kann sie manuell so konfigurieren, dass sie repliziert werden. |
Reihenfolge der Nachrichten |
Aufgrund der partitionierten Protokollarchitektur erhält jeder Verbraucher die Informationen in der richtigen Reihenfolge. |
Nachrichten werden den Verbrauchern in der Reihenfolge ihres Eingangs in der Warteschlange zugestellt. Wenn es konkurrierende Verbraucher gibt, verarbeitet jeder Verbraucher eine Teilmenge dieser Nachricht. |
Protokolle |
Kafka verwendet ein binäres Protokoll über TCP. |
Erweitertes Messaging-Warteschlangenprotokoll (AMQP – Advanced Messaging Queue Protocol) mit Unterstützung über Plugins: MQTT, STOMP. |
Lesen Sie mehr über den Unterschied zwischen Kafka und RabbitMQ»
Wie kann AWS Ihre Kafka-Anforderungen unterstützen?
Lesen Sie hier mehr darüber, wie Sie Kafka manuell auf AWS bereitstellen können.
AWS bietet auch Amazon MSK an, den kompatibelsten, verfügbarsten und sichersten vollständig verwalteten Service für Apache Kafka, der es Kunden ermöglicht, Data Lakes zu füllen, Änderungen an und aus Datenbanken zu streamen und Anwendungen für Machine Learning und Analytik zu betreiben. Mit Amazon MSK können Kunden weniger Zeit mit der Verwaltung der Infrastruktur und mehr Zeit mit der Entwicklung von Anwendungen verbringen. Weitere Informationen zu Amazon MSK.
Nächste Schritte in AWS
Sie erhalten sofort Zugriff auf das kostenlose Kontingent von AWS.
Starten Sie mit der Entwicklung in der AWS-Managementkonsole.