Kafka0.10升级潜在影响(二)

接上篇,今天做了个测试,看log.message.format.version对consumer性能的影响到底有多大,一共20万条数据,每条数据大小1K,总共200M。

首先在Kafka 0.9上的平均测试结果是8.362秒。

而升级到Kafka 0.10之后,平均测试结果如下:


producer versionlog.message. format.versionconsumer versioncost
0.9 0.10 0.9 8.966s
0.9 0.10 0.10 6.470s
0.100.10 0.9 8.834s
0.100.10 0.106.604s
0.90.90.98.355s
0.90.90.106.242s
0.100.90.98.233s
0.100.90.106.310s
  • 对比1-5,2-6,3-7,4-8,使用默认的log.message.format.version=0.10.0会使吞吐量降低,因为消息里增加了8个字节timestamp,虽然原始size是1K,只增加了8‰的大小,但从测试结果看,吞吐量降低远远不止8‰ 。
  • 设置log.message.format.version=0.9,吞吐量和kafka0.9差不多。这个很好理解。
  • producer的版本不影响消费吞吐量。无论produce的message是什么版本,保存到broker之后都以log.message.format.version为准,因此consume的性能是不受影响的。
  • 0.10的consumer吞吐量大大优于0.9consumer,

结论:

  • 无论如何,kafka broker升级到0.10之后,优先使用0.10 consumer,效率高
  • 从性能上考虑,应该设置log.message.format.version=0.9,但这样就不能使用0.10的message的新特性,比如timestamp