闲聊kafka(五)

生产者有很多可配置的参数,在kafka文档里都有说明,它们大部分都有合理的默认值,没必要去修改它们,不过有几个参数在内存使用,性能和可靠性方面对生产者影响比较大,接下来我们意义说明。

acks

acks参数指定了必须要有多少个分区副本收到消息,生产者才会认为消息是写入成功的,这个参数对消息丢失对可能性有重要影响。

  • acks = 0,吞吐量高,不关心消息是否发送成功。
  • acks = 1,只要首领写成功,生产者就会收到服务器的成功响应。如果首领所在的服务器宕机,生产者会重新发送,如果此时一个没有收到消息的节点成为新首领,那么消息丢失。
  • acks = all,所有参与复制的节点全部收到消息时,生产者才会返回成功的响应。

buffer.memory

该参数用来设置生产者内存缓冲区的大小。如果消息的生产速度大于发送到服务器的速度,会导致生产者空间不足,这个时候send()方法要么被阻塞,要么抛出异常(可以通过配置max.block.ms来让它稍等一会儿再抛出异常)。

compression.type

默认情况下,消息发送时不会被压缩。该参数可以设置为snappy、gzip或者lz4,它指定了消息发送给broker之前使用哪一种压缩算法进行压缩。使用压缩可以降低网络传输开销和存储开销,而这往往是向kafka发送消息的瓶颈所在。

retries

生产者从服务器收到的错误可能是临时性的错误,比如分区找不到首领。默认情况下生产者会100ms(可以通过配置retry.backoff.ms来改变这个值)重试一次,一共重试2147483647次,使用retries可以修改这个次数。

batch.size

当多个消息需要被发送到同一个分区时,生产者会把它们放在同一个批次里,该参数指定了一个批次可以使用到内存大小,默认16384字节,注意:并不是该批次占用的内存大小到达了设定的代销客户端才会发送数据给服务器,二者没有必然的关系。

linger.ms

该参数指定了生产者在发送批次之前等待更多消息加入批次的时间,默认是0。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值