* ack=1,Producer只要收到一个分区副本成功写入的通知就认为推送消息成功了。这个副本必须是leader副本, 只有leader副本成功写入了,Producer才会认为消息发送成功。但是,果leader成功写入后,还没来得及把数据同步到Follower节点就挂了,这时候消息就丢失了。 ack的默认值就是1。这个默认值其实就是吞吐量与可靠性的一个折中方案。生产上我们可以根据实际情况进行调整,比如如果你要追求高吞吐量,那么就要放弃可靠性。
* ack=-1,Producer只有收到分区内所有副本的成功写入的通知才认为推送消息成功了
* ack=0 简单来说就是,Producer发送一次就不再发送了,不管是否发送成功