深入浅出理解kafka原理系列之:ack
- 生产者发送消息没有收到ack,生产者会阻塞,阻塞到3s的时间,如果还没有收到信息,会进行重试。重试的次数是3次。
- 对于ack来说,会有三个参数配置:ack=0,ack=1,ack=-1/all
- ack=0:kafka-cluster不需要任何的broker收到消息,就立即返回ack给生产者,最容易丢失消息,效率是最高的
- ack=1:多副本之间的leader已经收到消息,并把消息写入到本地的log中,才会返回ack给生产者,性能和安全性是最均衡的。
- ack=-1/all:里面有默认的配置min.insync.replicas=2(默认为1,推荐配置大于等于2),此时需要一个leader和一个follower同步完成后,才会返回ack给生产者(此时集群中有2个broker已完成数据的接收),这种方式最安全,性能最差。