【问题标题】:How can i make batch.size dynamic in kafka producers?如何在 kafka 生产者中使 batch.size 动态化?
【发布时间】:2017-10-27 15:05:44
【问题描述】:

保持batch.size 较小会导致生产者更频繁地发送消息的开销,同时会降低吞吐量,保持较大会导致内存浪费。是否有任何解决方案可以根据负载动态调整此大小?

【问题讨论】:

标签: apache-kafka kafka-producer-api


【解决方案1】:

仅当您停止以前的生产者并开始新的生产者时。生产者对象在发送任何消息之前需要所有属性。您不能在作业中修改其属性。

【讨论】:

  • 那么,设置此属性的最佳做法是什么?
  • 从两个角度看待这个问题:延迟和吞吐量。您可以一次拥有任何一个,而不是两者兼有。如果您想获得最大吞吐量并且如果您想设置最大延迟设置 linger.ms=0,则可以使用 linger.ms。
【解决方案2】:

您可以将linger.msbatch.size 属性结合使用。如果您已将 batch.size 设置为 5242880 (5 MB) 并将 linger.ms 设置为 10 ms。然后,生产者将等到批量大小填满/达到逗留时间。

在官方文档中查看有关linger.ms 属性的更多信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    相关资源
    最近更新 更多