Ich bewege mein Projekt von RabbitMQ nach Kafka und versuche zu verstehen, wie schnell reaktives Kafka sein wird.Wie verbessert man die langsame Leistung von reaktiven Kafka (Scala plus Akka Streams)?
Ich bin derzeit in der Lage, etwa 12K/sec triviale Nachrichten/Sek zu Rabbit zu schreiben, und beim Lesen einen trivialen Zug aus der Warteschlange durch einen "Hallo Welt" -Stream bei etwa 4K/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 Strom auf Lese fließen hier die Vorgehensweise in den Beispielen: DummyConsumer.scala
Kennt jemand irgendwelche Tipps, wie ich die vergleichbar bis zu Ebenen lesen bekommen könnte zurück zum Kaninchenansatz?
Interessant: Ich habe es gerade "direkt" versucht (Zugriff auf Kafka über die rohen Java-Treiber vs reaktive Kafka) und bin über 22K liest, so dass das ziemlich gut ist. Es scheint etwas daran zu liegen, wie ich reaktiv benutze - Kafka verlangsamt die Dinge.
Ok ... Ich jage dieses Ding. Als nächstes probierte ich einen rohen Akka-Stream "Hallo Welt":
now = System.currentTimeMillis()
count = 0
val in2 = Source(1 to num)
val g = RunnableGraph.fromGraph(GraphDSL.create() { implicit b =>
import GraphDSL.Implicits._
val show = Flow[Int].map{ i => count +=1; if(count==num) println(s"time 2 ($count): "+(System.currentTimeMillis() - now)); i }
in2 ~> show ~> Sink.ignore
ClosedShape
})
g.run()
Thread.sleep(2000)
Dies lief mit einer 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.
Hallo Greg, reaktive Kafka-Entwickler hier. Wir beenden reactive-kafka 0.11, was Ihnen eine bessere Leistung bringen soll. Ältere Versionen sollten jedoch leistungsfähiger als nur 2K/s sein. Hast du noch deinen Code? Ich würde gerne sehen, wie Sie reaktives Kafka verwenden. – kciesielski
Leider habe ich diesen Code nicht mehr. Im Grunde genommen habe ich eine cut'n-Paste aus dem Beispielcode in den Dokumenten gemacht ... nichts Besonderes. Ich wechselte und entwickelte ein Projekt, LateKafka (in GitHub), um eine Quelle für Akka-Streams zu schaffen. Es ist wirklich schnell - ich zog 6-stellige Transaktionen pro Sekunde Kafka-Thru-Stream für einen trivialen Stream. Spannende Neuigkeiten über 0.11. Es wird cool sein, es auszuprobieren. – Greg
Hallo Jacek, ich habe gerade meinen Test mit der neuen Version 0.11 neu aufgebaut. Es ist viel schneller als die M-Serie, aber ich bin immer noch nicht in der Lage, die hohen Zahlen zu reproduzieren, die andere gezeigt haben.Hinweis: Ich versuche nur etwas Leistung zu erzielen - mein wirklicher Anwendungsfall verwendet Streams DSL, die in den Dokumenten nicht angezeigt werden. Ich habe Code hier in einer anderen Frage geschrieben: http://stackoverflow.com/questions/39617827/why-dont-i-see-high-performance-with-reactive-kafka-0-11-release – Greg