2016-11-20 15 views
1

Ich muss Nachrichten von Kafka-Themen abrufen und andere Systeme über HTTP-basierte APIs benachrichtigen. Das heißt, Sie erhalten eine Nachricht vom Thema, ordnen sie den APIs von Drittanbietern zu und rufen Sie sie auf. Ich beabsichtige, dafür einen Kafka Sink Connector zu schreiben.Kafka connect oder Kafka Client

Für diesen Anwendungsfall ist Kafka Connect die richtige Wahl oder ich sollte mit Kafka Client gehen.

Antwort

1

Kafka Connect wird für diesen Zweck gut funktionieren, aber dies wäre auch eine ziemlich einfache Verbraucheranwendung, weil die Verbraucher auch die Vorteile der Fehlertoleranz/Skalierbarkeit haben und in diesem Fall machen Sie wahrscheinlich nur einfache Message-at -eine Zeitverarbeitung innerhalb jeder Verbraucherinstanz. Sie können auch einfach enable.auto.commit für diese Anwendung verwenden, so dass Sie nicht auf die kniffligen Teile der direkten Nutzung des Verbrauchers stoßen werden. Die Hauptsache bei der Verwendung von Kafka Connect wäre im Vergleich zur Verwendung des Consumers in diesem Fall, dass der Connector generisch für verschiedene Eingabeformate erstellt werden könnte, was Ihnen aber für einen benutzerdefinierten Connector möglicherweise nicht wichtig ist.

1

Kafka-Clients, wenn Sie die volle Kontrolle über Ihren Code haben und Sie Experte sind, möchten Sie eine Anwendung mit Kafka verbinden und den Code der Anwendung ändern.

push data into Kafka 

pull data from Kafka. 

https://cwiki.apache.org/confluence/display/KAFKA/Clients


Kafka Connect, wenn Sie nicht die Kontrolle auf fremden Code neu in Kafka und Sie haben Kafka zu Datenspeichern zu verbinden, die Sie nicht Code ändern können.

Der Anwendungsbereich von Kafka Connect ist eng: Es konzentriert sich nur auf das Kopieren von Streaming-Daten von und nach Kafka und behandelt keine anderen Aufgaben.

http://docs.confluent.io/2.0.0/connect/


Ich füge einige Zeilen andere Blogs bilden zu erklären Unterschiede

Unternehmen, die Kafka schreibt eine Reihe von Code zu übernehmen wollen, dass ihre Datenströme zu veröffentlichen. Was wir aus Erfahrung gelernt haben, ist, dass dies richtiger ist, als es scheint. Insbesondere gibt es eine Reihe von Problemen, die jeder Connector zu lösen hat:

• Schemaverwaltung: Die Fähigkeit der Datenpipeline, Schemainformationen zu übermitteln, wenn sie verfügbar sind. In Ermangelung dieser Fähigkeit müssen Sie es stromabwärts neu erstellen. Wenn es mehrere Konsumenten für dieselben Daten gibt, muss jeder Verbraucher sie neu erstellen. Wir werden die verschiedenen Nuancen der Schemaverwaltung für Datenpipelines in einem zukünftigen Blogpost behandeln.

• Fehlertoleranz: Führen Sie mehrere Instanzen eines Prozesses und

• Parallelität zu Ausfällen elastisch sein: Horizontal Skala Datensätze in großem Maßstab

• Latency zu handhaben: Ingest, Transport- und Prozessdaten in Echtzeit und sich dadurch von einmaligen Daten-Dumps entfernen.

• Lieferung Semantik: starke Garantien bieten, wenn Maschinen Absturz oder Prozesse scheitern

• Operationen und Überwachung: die Gesundheit und den Fortschritt eines jeden Datenintegrationsprozess in konsistenter Weise

in

Diese sind wirklich harte Probleme überwachen es ist nicht möglich, sie einzeln in jedem Connector zu lösen. Stattdessen möchten Sie eine einzelne Infrastrukturplattform, auf der Connectors aufbauen können, um diese Probleme auf eine konsistente Weise zu lösen.

Bis vor kurzem erforderte die Übernahme von Kafka für die Datenintegration ein erhebliches Entwickler-Know-how. Entwicklung eines Kafka-Connectors, der auf den Client-APIs erstellt werden muss.

https://www.confluent.io/blog/announcing-kafka-connect-building-large-scale-low-latency-data-pipelines/

0

sollten Sie verwenden kafka Spüle anschließen, wenn Sie verwenden kafka Quelle verbinden, um Nachrichten an einem bestimmten Thema zu erzeugen.

für z.B. Wenn Sie eine Dateiquelle verwenden, sollten Sie die Datei-Senke verwenden, um zu konsumieren, welche Quelle erzeugt wurde. oder wenn Sie jdbc-source verwenden, sollten Sie jdbc-sink verwenden, um zu konsumieren, was Sie produziert haben.

Da das Schema des Producer und Sink Consumer kompatibel sein sollte, sollten Sie kompatible Source und Sink auf beiden Seiten verwenden. Wenn die Schemas in einigen Fällen nicht kompatibel sind, können Sie die seit Version 10.2 von Kafka hinzugefügte SMT-Funktion (Simple Message Transform) verwenden, und Sie können Nachrichtentransformatoren schreiben, um Nachrichten zwischen inkompatiblen Produzenten und Konsumenten zu übertragen.

Hinweis: Wenn Sie Nachrichten schneller übertragen möchten, schlage ich vor, dass Sie avro und Schema-Registrierung verwenden, um Nachrichten effizienter zu übertragen.

Wenn Sie mit Java Code können Sie Java Kafka Stream, Spring-Kafka-Projekt oder Stream-Verarbeitung verwenden, um zu erreichen, was Sie wünschen.

Verwandte Themen