kafka消息丢失和消息重复的情况

kafka消息丢失和消息重复的场景

一、介绍

kafka作为消息队列,一定会有消息丢失和消息重复的问题,那什么场景下会出现这种情况呢?
kafka有一个参数叫做acks
当生产者向leader发送消息后,会返回一个确认的消息给生产者。
但是什么时候leader会发送确认消息返回给生产者呢?就是通过acks这个参数决定的,这个参数有三种情况01-1
0:就是不用leader发送确认消息,生产者直接发送消息数据给leader。这种情况就会容易发送消息丢失。
1:就是leader不用等所有的follower同步后才发送确认消息后,生产者才发送消息数据给leader。这种情况比上一种可靠一点。
-1:就是leader必须等所有的follower同步完成后才能发送确认消息给生产者,这个时候生产者才会发送消息数据。

二、消息丢失

acks参数设置为1的时候。
当leader接收到生产者发送过来的消息时,不需要等待follower同步,返回确认消息,生产者发送消息HelloA,leader接收到到消息,并没有同步follower,这个时候leader挂掉了,follower选举出新的leader,这个时候因为已经接收到确认消息,所以不会再发送HelloA,会发送下一条消息HelloB,这样我们就丢失了HelloA这条消息。

三、消息重复

acks参数设置为-1的时候。当leader接收到生产者发送过来的消息HelloA时,则等待follower同步,才能返回确认消息,但是这个时候leader挂掉了,follower选举出新的leader,没有发送确认消息给生产者,所以生产者还会发送HelloA这条消息,但是HelloA已经同步到所有的follower了,这样就发生了消息重复的情况了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Liu_Shihao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值