2017-06-01 3 views
1

@kafka Benutzer:Python vs Java für kafka Implementierung

Ich habe versucht, Python-Client für kafka zu verstehen, als auch PyPy Client inklusive. Im Anschluss war ein gutes Benchmarking ich einige ähnliche Ergebnisse lesen und realisiert:

http://mrafayaleem.com/2016/03/31/apache-kafka-producer-benchmarks/

Ich bin sehr verwirrt, ob Java einen massiven Vorteil gegenüber Python hat, da die Bibliotheken geschrieben werden, mit Hilfe von Java und kafka. Also meine Frage ist, hilft die native Implementierung von Kafka in Java mit der Leistung enorm, wenn Java verwendet wird, oder funktioniert PyPy/Python gleich besser?

Da ich ein Python-Programmierer bin, bin ich überhaupt nicht mit Java vertraut und daher verwirrt.

Antwort

3

Apache Kafka definiert ein sprachneutrales Kabelprotokoll (siehe https://kafka.apache.org/protocol), so dass Clients in jeder Programmiersprache geschrieben werden können und nicht auf dem Java-Client basieren müssen, der mit der Kern-Kafka-Distribution ausgeliefert wird. Zum Beispiel ist die Bibliothek c/C++ librdkafka ein sehr leistungsfähiger Nicht-Java-Client. Es gibt eine Reihe von Python-Kafka-Clients, darunter einen, der auf librdkafka basiert. Benchmark-Ergebnisse und andere Vergleichsinformationen für die verschiedenen Kafka Python-Clients finden Sie hier http://activisiongamescience.github.io/2016/06/15/Kafka-Client-Benchmarking/

+0

vielen Dank. Nur eine kurze Frage: Es scheint eine Menge Kurse zu geben, in denen Kafka und andere Apache-Stacks in Java gelehrt werden, was mich dazu gebracht hat anzunehmen, dass die Implementierung in der Muttersprache die Performance unterstützt. Also, laut Ihrer Antwort, alles was Sie sagen, dass Kafka-Python und andere Kunden einfach Kommunikatoren sind und weniger mit der eigentlichen Backend-Engine zu tun haben? – Omkar

+1

Der Java-Client wird mit Kafka ausgeliefert und alle anderen Clients werden separat ausgeliefert. Aus diesem Grund konzentrieren sich die meisten Online-Materialien auf Java. Es hat nichts mit Leistung zu tun. –