深入浅出kafka-生产者相关原理

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

你可能感兴趣的:(网络,kafka,redis,java,python)