kafka发送端核心参数说明
所属分类 kafka
浏览量 1085
发送过程
client send 序列化器 分区器 消息缓冲池 send线程
吞吐量 可靠性 不丢消息
Producer端核心参数
acks
max.request.size
retries
compression.type
buffer.memory
batch.size
linger.ms
request.timeout.ms
max.in.fight.requests.per.connection
acks
0 发送消息后立即返回,不等待broker端响应结果
1 leader副本成功写入即可,无需等待ISR(同步副本)集合中的其他副本写入成功,默认值
all或-1 leader副本成功写入,ISR中的其他副本成功写入
max.request.size
发送的最大消息大小 ,默认 1048576,1M
retries
消息发送失败重试次数,默认值 0
网络抖动 leader换主
retry.backoff.ms
重试之间停顿时间 默认100ms
compression.type
是否对消息进行压缩 默认值 none 不压缩
压缩方式,gzip snappy lz4 zstd(2.1.0开始支持)
建议lz4
zstd 压缩比最高
buffer.memory
消息缓冲池或缓冲区的大小,默认值 33554432,32M
消息发送过快导致buffer满,阻塞 max.block.ms(默认60000即60s)
batch.size
发送到缓冲区中的消息会被分批发送到broker 端
默认值 16384,即16KB
linger.ms
超过该时间的batch也会被发送到broker端
默认值 0,立即发送
linger 逗留;多停留;拖延;磨蹭;迟迟不去;继续留存;缓慢消失
request.timeout.ms
默认值 30000,30s
max.in.fight.requests.per.connection
每个连接最多缓存的请求数,默认值5
建议将该参数设置为1 , 避免消息乱序问题
不丢消息 高可靠配置
acks = all or -1
retries = 3
max.in.fight.requests.per.connection = 1
同步发送 ,或使用带回调机制的send方法即send(record, callback)发送消息,并对失败消息进行处理
unclean.leader.election.enable = false
replication.factor = 3
min.insync.replicas = 2
消费端禁用自动提交offset
enable.auto.commit = false
min.insync.replicas
ISR集合中的最少副本数,默认值1,只有在acks=all或-1时才有效
保证ISR中的写入个数不少于min.insync.replicas (ISR 中可能只有leader一个副本)
常用配置
replication.factor=3 (3个副本)
min.insync.replicas=2
acks设为all
例子代码
https://gitee.com/dyyx/kafkademo/blob/master/src/main/java/dyyx/ProducerTest.java
上一篇
下一篇
kafka-topics.sh 无法获取topic列表及topic信息
kafka之broker-list bootstrap-server 和 zookeeper
Kafka 和 RocketMQ 底层存储简单比较
kafka消息发送机制
Kafka中的分区分配
linux OOM Killer 如何破