Kafka的ack机制,指的是producer的消息发送确认机制,这直接影响到Kafka集群的吞吐量和消息可靠性。而吞吐量和可靠性就像硬币的两面,两者不可兼得,只能平衡。
acks参数配置:
ack有3个可选值,分别是1,0,-1。
0 :生产者发送消息不需要等待任何服务端的响应,如果在发送消息写入kafka的时候出现异常,导致kafka并没有接受到这条消息,那么生产者无从得知,消息也就丢失了,但是这种情况延迟低,设置为0,可达到最大吞吐量
(简单来说就是producer发送一次就不再发送了,不管是否发送成功。发给你就完事了
)
1:
生产者发完消息后,消息成功写入到leader后,就返回ack机制,这种情况不用等待follower同步才发送ack,如果写入成功后的leader突然宕机,选择另外一个follower当leader,再次写入就丢失数据了
(简单来说就是,producer只要收到一个分区副本成功写入的通知就认为推送消息成功了。这里有一个地方需要注意,这个副本必须是leader副本。只有leader副本成功写入了,producer才会认为消息发送成功。
)