生产者

参数名称

描述

bootstrap.servers

kafka集群的地址

key.deserializer

key的反序列化类,写全类名

value.deserializer

value的反序列化类,写全类名

buffer.memory

RecordAccumulator缓冲区总大小,默认32m

batch.size

缓冲区一批数据最大值,默认16k。适当增加该值,可以提高吞吐量,如果该值设置太大,会导致数据传输延迟增加

linger.ms

如果数据迟迟未达到batch.size,sender等待linger.ms之后就会发送数据,单位ms,默认值是0ms,表示没有延迟。生产环境建议该值大小为5-100ms之间

acks

compression.type

生产者发送数据的压缩方式,默认是none,也就是不压缩

max.in.flight.requests.per.connection

允许最多没有返回ack的次数,默认为5,开启幂等性要保证该值是1-5的数字

enable.idempotence

是否开启幂等性,默认true

retries

当消息发送出现错误,系统会重发消息,retries表示重试次数

retry.backoff.ms

两次重试之间的时间间隔,默认是100ms

生产者如何提高吞吐量

参数名称

描述

buffer.memory

batch.size

linger.ms

compression.type

数据可靠性

参数名称

描述

acks

0:生产者发送过来的数据不需要等待应答

1: 生产者发送过来的数据,Leader收到数据后应答

-1:Leader和ISR里面的所有节点收齐数据后应答。默认值是-1,-1和all等价

至少一次(At Least Once)= ack级别设置为-1+分区副本大于等于2+ISR里应答的最小副本数量大于等于2

数据去重

参数名称

描述

enable.idempotence

是否开启幂等性,默认true

消费者

参数名称

描述

bootstrap.servers

kafka集群的地址

key.deserializer

key的反序列化类,写全类名

value.deserializer

value的反序列化类,写全类名

group.id

消费者组id

enable.auto.commit

默认值为true,消费者会自动周期性的向服务器提交偏移量

auto.commit.interval.ms

提交偏移量的评率,默认为5s

消费者提高吞吐量
增加分区数

参数名称

描述

fetch.max.bytes

max.poll.records

一次poll拉取数据的最大条数,默认是500条

参考博客

[1]