代码之家  ›  专栏  ›  技术社区  ›  zaxme

提高卡夫卡生产商吞吐量

  •  0
  • zaxme  · 技术社区  · 6 年前

    我发现了这个 article 当我在计算我的生产商吞吐量时。杰伊·克雷普斯在信中说 producer 线程和3x同步分区复制他每秒获得421823条记录。他的记录都是100字节,他有6个分区和6个代理。他还使用了基于回调的发送,这意味着他可以保证消息的顺序。

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

    • 打电话 .get 关于未来
    • 通过回调发送消息
    • 不通过回调发送消息

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

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

    1 回复  |  直到 6 年前
        1
  •  0
  •   zaxme    6 年前

    因此,经过一些研究,我发现我对模式注册表进行了一个阻塞调用,我正在为发送给Kafka的每个批处理进行调用。一旦解决了这个问题,吞吐量将达到每秒8500条记录。

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

    • 确保你有 auto.register.schemas 设置为假
    • 如果您使用的是GenericRecord,请确保 Schema 对象的生成参照相同