Kafka的ack机制


前言

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只有收到分区所有副本的成功写入的通知才认为推送消息成功了。

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值