1 生产者如何提升吞吐量 26} 0: 10
发送原理图
1、buffer.memory 设置缓冲区 默认32M
2、compression.type 默认none,可以设置为 lz4 ,会加大producer 发送端cpu开销
3、batch.size 默认 16K ,可以到32k , 配合 linger.ms 加到 100 毫秒
4、异步发送
2 生产者异常处理 27} 0:7
LeaderNotAvailableException 某台机器挂了或者重启,retry 即可,无需理会
NotControllerException 同理
NetworkException 网络异常,可以retries 参数 ,如果还是不行只能自行处理异常
3 ack 参数详解 29} 0:11
producer 发送端
request.required.acks = 0 写后不管,会丢
request.required.acks = 1 leader分区写入成功即可,以后会丢,一般这个足够
request.required.acks = -1 所有分区都成功 ,性能差
kafk 服务端:
min.insync.replicas
数据不丢的 方案:
分区副本 >= 2
ack = -1
min.insync.replicas >=2
4 自定义分区 30} 0:5
没有key ,轮询分区发送
有key , kafka自带分区器会计算hash ,key相同的 在同一分区
自定义分区:
implements Partitioner
网友评论