生产者
参数名称 | 描述 |
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]