kafka-producer batch.size与linger.ms参数

Kafka需要在吞吐量和延迟之间取得平衡,可通过下面两个参数控制。


batch.size

  • 当多个消息发送到相同分区时,生产者会将消息打包到一起,以减少请求交互. 而不是一条条发送
  • 批次大小可通过batch.size参数设置。默认:16KB
  • 较小的批次大小有可能降低吞吐量。(设置为0则完全禁用批处理)
  • 非常大的批次大小可能会浪费内存。因为我们会预先分配这个资源。

例子
比如说发送消息的频率是每秒300条,那么如果将batch.size调节到32KB,或64KB,是否可以提升发送消息的整体吞吐量呢。

因为理论上来说,提升batch的大小,可以允许更多的数据缓冲在里面,那么一次Request发送出去的数据量就更多了,这样吞吐量可能会有所提升。

但这个值也不能无限的大,过于大了之后,要是数据老是缓冲在Batch里迟迟不发送出去,那么岂不是你发送消息的延迟就会很高。

比如说,一条消息进入了Batch,但是要等待5秒钟Batch才凑满了64KB,才能发送出去。那这条消息的延迟就是5秒钟。

所以需要在这里按照生产环境的发消息的速率,调节不同的Batch大小自己测试一下,根据最终出去的吞吐量以及消息的延迟,设置一个最合理的参数。


linger.ms

上面比如设置batch.size为32KB,但是有的时刻消息比较少,过了很久,比如5min也没有凑够32KB,这时延时就很大,所以需要一个参数. 再设置一个时间,到了这个时间,即使数据没达到batch.size的值,也要将这个批次发送出去。比如设置5ms,就是到了5ms,批次大小还没到32KB,也会发出去。

总结

  • 同时设置batch.sizelinger.ms,就是哪个条件先满足就都会将消息发送出去。
  • Kafka需考虑高吞吐量延时的平衡。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王雀跃

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值