2016-03-29 5 views
9

私はRabbitMQからKafkaに自分のプロジェクトを移しています。反応するカフカの速さを理解しようとしています。反応カフカ(Scala plus Akka Streams)のパフォーマンスをいかに向上させるか?

私は現在、ウサギに約12K/secの簡単なメッセージ/秒を書き込むことができます。読み取り時には、キューから「hello world」ストリームを約4K /秒で簡単に引き出すことができます。

私は反応性ストリームでカフカに移動しましたが、おそらく1M /秒を書くことができます - 巨大な勝利! しかし、同じ環境では、ここでの例のアプローチを使用してストリームを読むと約2K /秒しか流れません。DummyConsumer.scala

誰かが私がどのようにレベルを比較できるかについてのヒントを知っていますか?ウサギのアプローチに?

興味深い:私はちょうど "直接"(raw Javaドライバ対リアクションカフカ経由でカフカにアクセスして)試してみたところ、約22Kの読み込みをしているのでかなり良いです。私はリアクションカフカを使ってどうやって物事を遅らせているのか何かを縫っている。

いいえ...私はこのことを狩っています。次に、生の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) 

これは非常に速い742K/secで実行されました。だから、カフカの生の原料は十分に速く、アクカの流れは速い。だから、犯人は、どのようにリアクションカフカがどのように構築されているか(あるいはそうであるか)、私がそれをどのように使用しようとしているかのいずれかにあります。摩擦のための会計原産のカフカの22K /秒に近い何かを見なければなりません。うーん。

+0

こんにちは、グレッグ、反応性カフカの開発者はここに。私たちは反応性カフカ0.11を完成させています。これはあなたにもっと良いパフォーマンスを与えるはずです。しかし、古いバージョンは、2K /秒よりも優れたパフォーマンスが必要です。コードはまだありますか?私はあなたがどのように反応カフカを使用しているのか見たいと思います。 – kciesielski

+0

残念ながら私はもうそのコードを持っていません。基本的に私は、ドキュメントのサンプルコードからcut'nペーストをしていました...何も想像もできません。 Akkaストリームのソースを作成するために、LateKafka(githubのプロジェクト)を移して開発しました。それは本当に速いです - 私は6フィートのトランザクション/秒のカフカ・スルー・ストリームを些細なストリームで引き出していました。 0.11についての刺激的なニュース。それを試してみるのはクールだ。 – Greg

+0

こんにちはJacek、私は新しい0.11リリースでテストを再構築しました。それはMシリーズよりはるかに高速ですが、私は残念ながら他の人が示した高い数字を再現することはできません。実際の使用例ではストリームDSLを使用していますが、DSLはドキュメントには表示されません。私は別の質問でここにコードを掲示しました:http://stackoverflow.com/questions/39617827/why-dont-i-see-high-performance-with-reactive-kafka-0-11-release – Greg

答えて

0

ない完全な答えが、再度お試しが、大幅なパフォーマンス向上がありますAkka Streams Kafka 0.11

(2016年9月)最近。私たちはいくつかのベンチマークを行っていますが、reactive-kafkaラッパーからのオーバーヘッドはまだあります(ただし、非同期バックプレッシャーを持つ素敵なAPIから得られるすべてのメリットなど)全体的な数字は非常によく見え、良くなっています。ここで

はプレーンカフカを使用して実装古い反応性・カフカバージョン(M4)、現在のバージョン(0.11)、および同等の機能を比較し、共通カフカの使用シナリオのカップルだ Producers/ Consumers(もちろん、考慮に入れません他の反応性成分と結合する)。

http://blog.akka.io/assets/kafka-bench1.png

Krzysiek Ciesielskiから " Benchmarking akka-stream-kafka" で詳細を参照してください。

+0

注:投稿しましたコメントを読む前の答え;) – VonC

+0

新しいライブラリに問題があります。この要点のような蘭コード:https://gist.github.com/gzoller/8847556ab1347b886d80cf53c3a1e867これは、ドキュメントからのバッチアドバイスを使用しようとする "デッドレター"エラーの束を作りました。また、各バッチの先頭(つまり最新のオフセット)をコミットするだけのバリアントを試しました。これは私にデッド・レター・エラーを与えませんでしたが、パーティション・オフセットのクリーンなセットも生成しませんでした。 – Greg

+0

@Greg Strange。その例に基づいて新しい質問をして、実際のAkka Streams Kafkaエキスパートがチャイムできるかどうかを調べることができます。 – VonC

関連する問題