我试图找出卡夫卡制片人的设置batch.size和buffer.memory之间的区别。
据我所知,batch.size:它是可以发送的批处理的最大大小。
文档将buffer.memory描述为:生产者可以用来缓冲等待发送的记录的内存字节。
我不明白这两者有什么区别。有人能解释一下吗?
谢谢
发布于 2019-01-04 16:23:17
照我的想法,
batch.size:可以在单个请求中发送的最大数据量。如果batch.size是( 32 *1024),这意味着可以在一个请求中发送32 KB。
buffer.memory:如果卡夫卡生产商无法向卡夫卡经纪人发送消息(批次)(比如说经纪人破产)。它开始在缓冲区内存中积累消息批处理(默认为32 MB)。一旦缓冲区满了,它将等待"max.block.ms“(默认为60000 is ),以便可以清除缓冲区。那就是抛出异常。
发布于 2021-05-26 10:46:58
Kafka生产者和Kafka消费者有许多有助于性能优化的配置,比如获得低延迟和高吞吐量。buffer.memory和batch.size也是其中之一,这些都是卡夫卡制片人特有的。让我们看看有关这些配置的更多细节。
batch.size也是基于linger.ms工作的,后者控制在发送当前批处理之前等待其他消息的时间。正如我们所知,卡夫卡生产者发送了一批消息,无论是在rge当前批处理已满时,还是在到达linger.ms时间时。默认情况下,一旦有发送线程可以发送消息,prodcuer就会立即发送消息,即使bacth中只有消息。
发布于 2020-09-05 19:54:21
这两种生产者配置在合流文档页上都有如下描述:
卡夫卡生产商试图将发送的信息分批收集,以提高吞吐量。使用Java,您可以使用batch.size来控制每个消息批处理的最大字节大小。
使用buffer.memory限制用于收集未发送消息的Java可用的总内存。当达到此限制时,在引发异常之前,生产者将阻止附加发送直到max.block.ms。
https://stackoverflow.com/questions/49649241
复制相似问题