Przenoszę mój projekt z RabbitMQ do Kafki i próbuję zrozumieć, jak szybko będzie reagować na kafka.Jak poprawić powolne działanie reaktywnego kafka (Scala plus strumienie Akka)?
Obecnie jestem w stanie napisać około 12K/sek banalnych wiadomości na sekundę do Rabbit, a po przeczytaniu zrobić trywialne pull z kolejki przez strumień "hello world" z prędkością około 4K/sek.
Przeprowadziłem się do Kafki z reaktywnymi strumieniami Mogę napisać może 1M/s - ogromna wygrana! Ale w tym samym środowisku, mogę tylko płynąć o 2K/sek przez strumień na odczycie z wykorzystaniem podejścia w przykładach tutaj: DummyConsumer.scala
Czy ktoś zna jakieś wskazówki dla jak mogę uzyskać odczytać z powrotem do poziomów porównywalnych do podejścia Królika?
Interesujące: Właśnie wypróbowałem to "bezpośrednio" (dostęp do Kafki przez surowe sterowniki Java vs reactive-kafka) i mam około 22K czyta, więc to całkiem nieźle. Szumuje mi coś o tym, jak używam reaktywnego kafka, spowalnia to wszystko.
Ok ... Poluję na to. Następny Próbowałem surowy strumień Akka "Hello World":
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)
ten prowadził w bardzo szybkim 742K/s! Tak więc Kafka Raw jest szybki, a strumienie Akka są szybkie. Więc sprawca jest gdzieś w tym, jak reaktywny kafka jest zbudowany (lub bardziej prawdopodobnie) jak próbuję go użyć. Rozważając tarcie, powinienem spodziewać się czegoś zbliżonego do surowej kafki 22K/sek. Hmm.
Witaj, Greg, reaktywny kafejka developer tutaj. Kończymy reaktywną kafkę 0.11, która powinna dać ci znacznie więcej przyzwoitej wydajności. Jednak starsza wersja powinna być bardziej wydajna niż zaledwie 2K/s. Czy nadal masz swój kod? Chciałbym zobaczyć, jak korzystasz z reaktywnego kafka. – kciesielski
Niestety nie mam już tego kodu. Zasadniczo robiłem cut'n paste z przykładowego kodu w dokumentach ... nic nadzwyczajnego. Przesunąłem i opracowałem projekt LateKafka (w github), aby stworzyć źródło dla strumieni Akka. Jest naprawdę szybki - wyciągałem 6-cio figurowy transakcje za sekundę kafka-thru-stream dla trywialnego strumienia. Ekscytujące wiadomości o 0.11. Fajnie będzie wypróbować to. – Greg
Witam Jacek, właśnie przebudowałem mój test z nowym wydaniem 0.11. Jest znacznie szybszy niż seria M, ale nadal nie jestem w stanie odtworzyć wysokich liczb, które pokazali inni.Uwaga Po prostu próbuję uzyskać pewną wydajność - mój prawdziwy przypadek użycia używa strumieni DSL, który nie jest pokazany w dokumentach. Opublikowałem kod tutaj w innym pytaniu: http://stackoverflow.com/questions/39617827/why-dont-i-see-high-performance-w-reactive-kafka-0-11-release – Greg