Update 09. April 2018 : Heutzutage können Sie auch ksqlDB , die Ereignis-Streaming-Datenbank für Kafka, verwenden, um Ihre Daten in Kafka zu verarbeiten. ksqlDB basiert auf der Streams-API von Kafka und bietet erstklassige Unterstützung für "Streams" und "Tabellen".
Was ist der Unterschied zwischen Consumer API und Streams API?
Die Streams-API von Kafka ( https://kafka.apache.org/documentation/streams/ ) basiert auf den Produzenten- und Konsumentenkunden von Kafka. Es ist deutlich leistungsfähiger und ausdrucksstärker als der Kafka-Kunden. Hier sind einige der Funktionen der Kafka Streams-API:
- Unterstützt genau einmalige Verarbeitungssemantik (Kafka-Versionen 0.11+)
- Unterstützt fehlertolerante zustandsbehaftete (und natürlich zustandslose) Verarbeitung, einschließlich Streaming- Joins , Aggregationen und Fensterung . Mit anderen Worten, es unterstützt die sofort einsatzbereite Verwaltung des Verarbeitungsstatus Ihrer Anwendung.
- Unterstützt die Verarbeitung zur Ereigniszeit sowie die Verarbeitung basierend auf der Verarbeitungszeit und der Aufnahmezeit
- Erstklassige Unterstützung für Streams und Tabellen . Hier trifft die Stream-Verarbeitung auf Datenbanken. In der Praxis benötigen die meisten Stream-Verarbeitungsanwendungen sowohl Streams als auch Tabellen, um ihre jeweiligen Anwendungsfälle zu implementieren. Wenn einer Stream-Verarbeitungstechnologie eine der beiden Abstraktionen fehlt (z. B. keine Unterstützung für Tabellen), stecken Sie entweder fest oder müssen diese Funktionalität manuell selbst implementieren (viel Glück damit...)
- Unterstützt interaktive Abfragen (auch als "abfragbarer Status" bezeichnet), um die neuesten Verarbeitungsergebnisse anderen Anwendungen und Diensten zugänglich zu machen
- Ist ausdruck: es wird mit (1) einem funktionalen Programmierung Stil DSL mit Operationen wie
map
, filter
, reduce
sowie (2) ein zwingender Stil Prozessor API für zB komplexe Ereignisverarbeitung (CEP) zu tun, und (3) Sie können sogar kombinieren das DSL und die Prozessor-API.
Unter http://docs.confluent.io/current/streams/introduction.html finden Sie eine detailliertere, aber dennoch allgemeine Einführung in die Kafka Streams-API, die Ihnen auch helfen soll, die Unterschiede zum untergeordneten Kafka-Verbraucher zu verstehen Klient. Es gibt auch ein Docker-basiertes Tutorial für die Kafka Streams-API , über das ich Anfang dieser Woche gebloggt habe .
Wie unterscheidet sich die Kafka Streams-API, da diese auch Nachrichten von Kafka verbraucht oder an Kafka sendet?
Ja, die Kafka Streams-API kann sowohl Daten lesen als auch Daten in Kafka schreiben.
und warum ist dies erforderlich, da wir unsere eigene Verbraucheranwendung mithilfe der Verbraucher-API schreiben und nach Bedarf verarbeiten oder von der Verbraucheranwendung an Spark senden können?
Ja, Sie könnten Ihre eigene Consumer-Anwendung schreiben - wie bereits erwähnt, verwendet die Kafka Streams-API den Kafka-Consumer-Client (plus den Producer-Client) selbst -, aber Sie müssten alle einzigartigen Funktionen der Streams-API manuell implementieren . In der obigen Liste finden Sie alles, was Sie "kostenlos" erhalten. Es ist daher eher ein seltener Umstand, dass ein Benutzer den Low-Level-Consumer-Client anstelle der leistungsstärkeren Kafka Streams-API auswählt.