首页  

kafka发送端核心参数说明     所属分类 kafka 浏览量 935
发送过程
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 如何破