Wie kann man die langsame Leistung von reaktiven Kafka (Scala plus Akka Streams) verbessern?

9

Ich bewege mein Projekt von RabbitMQ nach Kafka und versuche zu verstehen, wie schnell reaktives Kafka sein wird.

Ich bin derzeit in der Lage, etwa 12K / sec triviale Nachrichten / Sek. in Rabbit zu schreiben, und beim Lesen einen trivialen Pull aus der Warteschlange durch einen "Hello World" -Stream mit etwa 4 K / Sek.

Ich bin mit reaktiven Streams nach Kafka gezogen, ich kann vielleicht 1M / sec schreiben - großer Gewinn! Aber in der gleichen Umgebung kann ich nur etwa 2K / sec durch den Stream fließen, indem ich den Ansatz in den Beispielen hier benutze: DummyConsumer.scala

Weiß jemand Tipps, wie ich das Lesen wieder auf Niveaus bringen könnte, die mit dem Rabbit-Ansatz vergleichbar sind?

Interessant: Ich habe es gerade "direkt" versucht (über die rohen Java-Treiber gegen reactive-kafka auf Kafka zugegriffen) und bekomme ungefähr 22K Lesezugriff, das ist also ziemlich gut. Es scheint etwas darüber zu sein, wie ich reaktive Kafka benutze, verlangsamt die Dinge waaay.

Ok ... Ich jage dieses Ding. Als nächstes habe ich einen rohen Akka-Stream "Hallo Welt" versucht:

%Vor%

Das lief mit sehr schnellen 742K / sec! Kafka rohe ist also schnell und Akka-Streams sind schnell. Also ist der Schuldige irgendwo in der Frage, wie reaktives Kafka gebaut wird (oder wahrscheinlicher), wie ich versuche, es zu benutzen. Unter Berücksichtigung von Reibung sollte ich erwarten, etwas in der Nähe von 22 K / Sek. Hmm.

    
Greg 29.03.2016, 19:13
quelle

1 Antwort

0

Keine vollständige Antwort, aber versuchen Sie es erneut, aber die letzten (September 2016) Akka Streams Kafka 0.11

  

Es gibt signifikante Leistungsverbesserungen. Wir haben einige Benchmarks gemacht, und während es noch einen Overhead vom reaktiven Kafka-Wrapper gibt (obwohl man im Hinterkopf hat, dass man auch etwas zurückbekommt: zB alle Vorteile einer netten API mit asynchronem Gegendruck!), die Gesamtanzahl sieht sehr gut aus und wird besser.

     

Hier sind ein paar gängige Kafka-Nutzungsszenarien, die die alte reaktive Kafka-Version (M4), die aktuelle Version (0.11) und die äquivalente Funktionalität mit reinem Kafka Producers / Consumers vergleichen (aber nicht berücksichtigen) natürlich, Verbindung mit anderen reaktiven Komponenten).

Weitere Informationen finden Sie unter " Benchmarking von akka-stream-kafka " von Krzysiek Ciesielski .

    
VonC 18.09.2016 16:54
quelle

Tags und Links