kafka生产数据时的应答机制(ACK)

kafka生产数据时的应答机制(ACK),第1张

kafka生产数据时的应答机制(ACK)

ACK = 0:生产者发送完数据,不用考虑数据是否已到达kafka服务器,然后紧接着就发下一条数据,这样,效率会非常高。但是存在一个问题:数据的丢失可能性比较大。

ACK = 1:生产者发送数据,是需要等待leader的应答,如果应答完成,才能发送下一条message,是不关心follower是否pull完成,是否接收成功的。这样,虽说性能会慢些,但是数据会比较安全。可但是,在leader保存完数据后,突然leader所在的broker down掉了,此时的follower还没来得及从leader那儿pull数据,那么这个数据就会丢失。

ACK = -1:可以理解为最耗时的选项。当生产者发送数据后,需要等待所有的副本的应答,包括leader+follower,这种方式是最安全的,但同时也是性能最差的。

总结简化这三种情况:
  1. ACK = 0:只发一次数据,不管leader是否接收成功
  2. ACK = 1:只要等待leader接收完成即可(如果没有配置ack机制,则默认为1)
  3. ACK = -1:需要等待leader将消息同步给所有的follower即可

(备注:当follower从leader那里pull数据后,会写入到本地的分段日志log中,同时也会返回给leader一个ACK标志)

有帮到你的点赞、收藏一下吧

                                                                        需要更多教程,微信扫码即可

                                                                                 

                                                                                         

                                                        别忘了扫码领资料哦【高清Java学习路线图】

                                                                     和【全套学习视频及配套资料】
 
 

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5635716.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-16
下一篇2022-12-16

发表评论

登录后才能评论

评论列表(0条)

    保存