我正在将我的项目从rabbitmq转移到kafka,并试图了解kafka的React速度有多快。
我目前能够以每秒12k的速度向rabbit写入琐碎的消息,并在读取时以每秒4k的速度通过“helloworld”流从队列中进行琐碎的拉取。
我搬到了Kafka,我可以以每秒1百万的速度写React流——巨大的胜利!但是在同一个环境中,我只能以大约2k/秒的速度通过读流,使用这里示例中的方法:dummconsumer.scala
有没有人知道我如何将读取恢复到与兔子方法相当的水平的技巧?
有趣的是:我只是“直接”尝试了一下(通过原始java驱动程序和React式kafka访问kafka),得到了大约22k的读取量,所以这很好。我是如何使用React式Kafka的,这让事情慢了下来。
好 啊。。。我在找这个东西。接下来,我尝试了一个原始的阿克卡流“你好世界”:
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/秒的速度运行!所以Kafka生吃的很快,而阿克卡溪流的速度很快。所以罪魁祸首是Kafka是如何建立的(或者更可能的是)我是如何使用它。考虑到摩擦,我预计会看到接近原始Kafka的22k/秒。隐马尔可夫模型。
1条答案
按热度按时间laik7k3q1#
不是一个完整的答案,但再试一次,但最近(2016年9月)阿克卡流Kafka0.11
性能有了显著提高。我们已经做了一些基准测试,虽然React式kafka Package 器仍然有一些开销(但是请记住,您也得到了一些回报:例如,所有的好处都来自于一个具有异步反压的优秀api!),总体数字看起来很好,而且越来越好。
下面是几个常见的kafka使用场景,比较了旧的React式kafka版本(m4)、当前版本(0.11)以及使用普通kafka实现的等效功能
Producers
/Consumers
(当然,不考虑与任何其他无功部件的连接)。更多信息请参见krzysiek ciesielski的“akka stream kafka基准测试”。