【问题标题】:Increasing Kafka producer throughput增加 Kafka 生产者吞吐量
【发布时间】:2019-06-14 18:55:32
【问题描述】:

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

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

  • 致电.get 了解未来
  • 使用回调发送消息
  • 在没有回调的情况下发送消息

我什至远不接近上面给出的数字。我想保证消息的顺序,所以我希望至少有一个回调与记录一起传递。

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

【问题讨论】:

  • 如果你使用kafka-producer-perf-test 脚本,你会得到什么?
  • @cricket_007 这帮助我验证了我使用的 Kafka 能够推送大约 900 条记录/秒的 100 字节
  • 鉴于你找到的文章是很多很多 Kafka 之前的版本,这似乎很低。

标签: apache-kafka


【解决方案1】:

因此,经过一些研究,我发现我对发送到 Kafka 的每个批次都进行了对模式注册表的阻塞调用。一旦处理完毕,吞吐量就会飙升至 8500 条记录/秒。

如果您正在使用模式注册表并且不想对其进行持续调用

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-13
    • 1970-01-01
    • 1970-01-01
    • 2013-04-16
    • 1970-01-01
    • 2021-03-04
    • 2017-09-06
    • 2018-08-31
    相关资源
    最近更新 更多