【问题标题】:Apache-Kafka, batch.size vs buffer.memoryApache-Kafka,batch.size 与 buffer.memory
【发布时间】:2018-09-13 21:52:17
【问题描述】:

我正在尝试找出 Kafka Producer 中设置 batch.size 和 buffer.memory 之间的区别。

据我所知,batch.size:这是可以发送的批处理的最大大小。

文档将 buffer.memory 描述为:生产者可以用来缓冲等待发送的记录的内存字节。

我不明白这两者之间的区别。谁能解释一下?

谢谢

【问题讨论】:

标签: apache-kafka kafka-producer-api


【解决方案1】:

在我看来,

batch.size:单个请求可以发送的最大数据量。如果 batch.size 为 (32*1024),则意味着可以在单个请求中发送 32 KB。

buffer.memory:如果 Kafka Producer 无法将消息(批次)发送到 Kafka 代理(假设代理已关闭)。它开始在缓冲存储器(默认 32 MB)中累积消息批次。一旦缓冲区已满,它将等待“ma​​x.block.ms”(默认为 60,000 毫秒)以便​​清除缓冲区。然后是抛出异常。

【讨论】:

  • buffer.memory 对启用压缩的生产者起到什么作用? buffer.memory的大小是否需要大于未压缩消息或压缩消息?
【解决方案2】:

Confluent documentation page 上描述了这两种生产者配置,如下所示:

  • batch.size

Kafka 生产者尝试将发送的消息分批收集以提高吞吐量。使用 Java 客户端,您可以使用 batch.size 来控制每个消息批次的最大大小(以字节为单位)。

  • buffer.memory

使用 buffer.memory 来限制 Java 客户端可用于收集未发送消息的总内存。当达到此限制时,生产者将在引发异常之前阻止额外的发送,时间为 ma​​x.block.ms

【讨论】:

  • buffer.memory 对启用压缩的生产者起到什么作用? buffer.memory的大小是否需要大于未压缩消息或压缩消息?
【解决方案3】:

Kafka Producer 和 Kafka Consumer 具有许多有助于性能调整的配置,例如获得低延迟和高吞吐量。 buffer.memorybatch.size 也是其中之一,它们是特定于 Kafka Producer 的。让我们看看这些配置的更多细节。

  1. buffer.memory 这设置了生产者将用于缓冲等待发送到代理的消息的内存量。如果应用程序发送消息的速度快于它们传递到服务器的速度,则生产者可能会用完空间,并且额外的 send() 调用将被阻塞或抛出基于 ma​​x.block.ms 的异常允许阻塞一段时间然后抛出异常的配置。另一种情况可能是,如果所有代理服务器由于任何原因而关闭,并且 kafka 生产者将无法向代理发送消息,并且生产者必须将这些消息保存在基于 buffer.memory 配置分配的内存中,但是如果经纪人没有恢复正常状态,这将很快被填满,然后如上所述 mx.block.ms 时间将被视为释放空间。 max.block.ms 的默认值为 60,000 毫秒 buffer.memory 的默认值为 32 MB (33554432)

  2. batch.size 当多个记录被发送到同一个分区时,生产者将它们批量放入。此配置以字节(而不是消息)为单位控制将 用于每个批次。当批次已满时,将发送该批次中的所有消息。然而,这并不意味着生产者将等待批次变满。生产者将发送半个完整的批次,甚至是只包含一条消息的批次。因此将批大小设置得太大不会导致发送消息的延迟。它只会为批次使用内存。将批大小设置得太小会增加额外的开销,因为生产者需要更频繁地发送消息。 默认批量大小为 16384。

batch.size 也是基于 linger.ms 的,它控制在发送当前批次之前等待附加消息的时间量。正如我们所知,Kafka 生产者会在 rge 当前批次已满或达到 linger.ms 时间时发送一批消息。默认情况下,只要有发送者线程可以发送消息,即使后面只有消息,prodcuer 也会立即发送消息。

【讨论】:

    猜你喜欢
    • 2019-01-02
    • 1970-01-01
    • 2018-08-08
    • 2021-06-14
    • 2018-08-11
    • 2021-08-22
    • 2016-08-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多