irpas技术客

Kafka的ack机制_醺泽

网络 6947

文章目Kafka的ack机制录 前言一、ACK的三个可选值1、ACK = 1 (默认)2、ACK = 03、ACK = -1


前言

Kafka的ACK机制,指的是producer的消息发送确认机制,这直接影响到Kafka集群的吞吐量和消息可靠性。而吞吐量和可靠性就像硬币的两面,两者不可兼得,只能平衡。

Kafka的ACK机制是针对producer的。

保证消息的吞吐量就是producer只负责发数据,不需要得知消息是否被集群接收,这样就会有大量的数据发送到Kafka的集群中,保证了Kafka集群的吞吐量。

保证消息的可靠性就是发送消息必须保证消息存储到了集群中,producer才能发送下一个消息。


一、ACK的三个可选值

ACK有3个可选值,分别是1,0,-1 。

1、ACK = 1 (默认)

等待leader接收成功即可。

只要收到一个分区副本成功写入的通知,就认为推送消息成功了。当然,这个副本必须是leader副本,只有leader成功写入后,producer才会认为消息发送成功。

ACK = 1 的情况,producer只要收到leader写入成功的通知,就会认为消息发送成功了,但是如果leader写入成功了,没来得及将数据同步到follower节点,原本的leader就死亡了,此时消息就会丢失。

ACK的默认值就说1 。这个默认值就说吞吐量与持久性的这种方案。

2、ACK = 0

发送一次,不论leader是否接收。

producer 不管发送成不成功,只发送一次就不再发送了。

提供了最低的延迟,保证了最大的吞吐量,但持久性最弱,无法保证broker是否接收到消息,无法确定leader是否死亡,也无法保证leader接收到消息后是否发送给follower。

3、ACK = -1

需要等待leader将消息同步给follower。

producer只有收到分区所有副本的成功写入的通知才认为推送消息成功了。


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #Kafka的ack机制