Kafka在什么情况下会出现消息丢失及解决方案

Kafka在什么情况下会出现消息丢失及解决方案。小编来告诉你更多相关信息。Kafka在什么情况下会出现消息丢失及解决方案今天分享:Kafka在什么情况下会出现消息丢失及解决方案的教程内容,下面来一起了解一下吧

Kafka在什么情况下会出现消息丢失及解决方案。小编来告诉你更多相关信息。

Kafka在什么情况下会出现消息丢失及解决方案

今天分享:Kafka在什么情况下会出现消息丢失及解决方案的教程内容,下面来一起了解一下吧。

Kafka在什么情况下会出现消息丢失及解决方案

消息发送

  1. ack=0,不重试

producer发送消息完,不管结果了,如果发送失败也就丢失了。

  1. **ack=1,leader crash **

producer发送消息完,只等待lead写入成功就返回了,leader crash了,这时follower没来及同步,消 息丢失。

  1. unclean.leader.election.enable 配置true

允许选举ISR以外的副本作为leader,会导致数据丢失,默认为false。producer发送异步消息完,只等待 lead写入成功就返回了,leader crash了,这时ISR中没有follower,leader从OSR中选举,因为OSR 中本来落后于Leader造成消息丢失。

解决方案

  • 配置:ack=all / -1,tries > 1,unclean.leader.election.enable : false

producer发送消息完,等待follower同步完再返回,如果异常则重试。副本的数量可能影响吞吐量。

不允许选举ISR以外的副本作为leader。

  • 配置:min.insync.replicas > 1

副本指定必须确认写操作成功的最小副本数量。如果不能满足这个最小值,则生产者将引发一个异常(要么是 NotEnoughReplicas,要么是NotEnoughReplicasAfterAppend)。

min.insync.replicas和ack更大的持久性保证。确保如果大多数副本没有收到写操作,则生产者将引发异 常。

  • 失败的offset单独记录

producer发送消息,会自动重试,遇到不可恢复异常会抛出,这时可以捕获异常记录到数据库或缓存,进行 单独处理。

消费:

先commit再处理消息。如果在处理消息的时候异常了,但是offset 已经提交了,这条消息对于该消费者来 说就是丢失了,再也不会消费到了。

broker的刷盘:

减小刷盘间隔

以上就是Kafka在什么情况下会出现消息丢失及解决方案的详细讲解,仅供大家参考建议!

本文内容由互联网用户自发贡献,该文观点仅代表作者本人。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 5733401@qq.com 举报,一经查实,本站将立刻删除。本文链接:https://fajihao.com/i/255540.html

(0)
sinrry的头像sinrry
上一篇 2023-11-05
下一篇 2023-11-05

相关推荐