繁体   English   中英

增加卡夫卡生产者的吞吐量

[英]Increasing Kafka producer throughput

我在计算生产者吞吐量时发现了这篇文章 Jay Kreps在报告中说,对于单个生产者线程和3x同步分区复制,他每秒可获得421,823条记录。 他的记录均为100字节,他有6个分区和6个代理。 他还使用基于回调的send,这意味着他可以保证消息的顺序。

我正在使用Kafka作为运行单个代理,6个分区,1x复制的服务。 我发送的记录大小大致相同,我每秒获得23条记录。 与Jay不同,我使用架构注册表进行avro序列化。 我尝试了所有类型的发送Kafka Producer API所提供的:

  • 在未来打电话给.get
  • 使用回调发送消息
  • 发送没有回调的消息

我什至离上述数字还差得远。 我想保证消息的顺序,因此我希望至少将回调与记录一起传递。

我知道追逐他的基准将很困难,这不是我的目标。 我只是觉得我缺少一些基本的东西。 我可以问些建议吗? 我将根据需要提供尽可能多的其他上下文。

因此,经过一番研究,结果发现我对发送给Kafka的每个批处理的模式注册表都有阻塞调用。 一旦处理完,吞吐量就可以达到8500条记录/秒。

如果您使用的是架构注册表,并且不想对其进行常量调用

  • 确保将auto.register.schemas设置为false
  • 如果您使用的是GenericRecord,请确保您的Schema对象的引用是相同的

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM