面试八股之消息中间件篇2.1——kafka——Kafka是如何保证消息不丢失?

hello,你好鸭,我是Ethan,一名不断学习的码农,很高兴你能来阅读。

✔️目前博客主要更新Java系列、项目案例、计算机必学四件套等。
人生之义,在于追求,不在成败,勤通大道。加油呀!

个人主页:Ethan Yankang
专栏:史上最强八股文||Java项目

温馨提示:划到文末发现专栏彩蛋   点击这里直接传送

本篇概览:详细讲解了Kafka是如何保证消息不丢失?


面试官:Kafka是如何保证消息不丢失

候选人

嗯,这个保证机制很多,在发送消息到消费者接收消息,在每个阶段都有可能会丢失消息,所以我们解决的话也是从多个方面考虑(共三个方面。)

第一个是生产者发送消息的时候,可以使用异步回调发送,如果消息发送失败,我们可以通过回调获取失败后的消息信息,可以考虑重试或记录日志,后边再做补偿都是可以的。同时在生产者这边还可以设置消息重试,有的时候是由于网络抖动的原因导致发送不成功,就可以使用重试机制来解决;

第二个在broker(“中间人”)中消息有可能会丢失,我们可以通过kafka的复制机制来确保消息不丢失,在生产者发送消息的时候,可以设置一个acks,就是确认机制。我们可以设置参数为all,这样的话,当生产者发送消息到了分区之后,不仅仅只在leader分区保存确认,在follwer分区也会保存确认,只有当所有的副本都保存确认以后才算是成功发送了消息,所以,这样设置就很大程度了保证了消息不会在broker丢失;

第三个有可能是在消费者端丢失消息,kafka消费消息都是按照offset进行标记消费的,消费者默认是自动按期提交已经消费的偏移量,默认是每隔5s提交一次,如果出现重平衡的情况,可能会重复消费或丢失数据。我们一般都会禁用掉自动提价偏移量,改为手动提交,当消费成功以后再报告给broker消费的位置,这样就可以避免消息丢失和重复消费了。



热门专栏推荐

计算机科学入门系列                     关注走一波

CSAPP深入理解计算机原理        关注走一波

微服务项目之黑马头条                 关注走一波

redis深度项目之黑马点评            关注走一波

Java面试八股文系列专栏            关注走一波

算法leetcode+剑指offer              关注走一波


总栏

​​​​​​JAVA后端技术栈                          关注走一波  

JAVA面试八股文​​​​​​                          关注走一波  

JAVA项目(含源码深度剖析)    关注走一波  

计算机四件套                               关注走一波  

算法                                        ​​​​​​     ​关注走一波  

必知必会工具集                           关注走一波

书籍网课笔记汇总                       关注走一波  

考试复习资料                              关注走一波  

C/C++技术栈                              关注走一波  

GO技术栈                                   关注走一波  


分栏

JAVA后端技术栈

spring                                      关注走一波         ​

redis                                        关注走一波

MySQL                               ​​​     关注走一波 

mybatis                        ​​​​     ​​​​      关注走一波

mybatisplus                           关注走一波

MQ                                          关注走一波

微服务                                     关注走一波

设计模式                                 关注走一波

分布式锁                                 关注走一波


JAVA八股文

JAVA面试八股文(redis、MySQL、框架、微服务、MQ、JVM、设计模式、并发编程、JAVA集合、常见技术场景)​​​​​​​

                                                        关注走一波    

史上最强JAVA八股文(强烈推荐)            

                                                        关注走一波                                   


JAVA项目(含源码深度剖析)

黑马头条(微服务)             关注走一波

黑马点评(redis)               关注走一波


计算机四件套

计算机基础                           关注走一波

计算机基础                           关注走一波

计算机网络                           关注走一波

数据结构与算法                    关注走一波


算法

leetcode                              关注走一波

剑指offer                             关注走一波


必知必会工具集                   关注走一波


书籍网课笔记汇总

CSAPP笔记                        关注走一波

计算机科学速成课               关注走一波

CS自学指南                        关注走一波

读书笔记与每日记录           关注走一波


考试复习资料​​​​​​​                      关注走一波


C/C++技术栈                      关注走一波                           


GO技术栈                          关注走一波                                                    


非常感谢你阅读到这里,如果这篇文章对你有帮助,希望能留下你的点赞 关注❤收藏✅ 评论,大佬三连必回哦!thanks!!!
愿大家都能学有所得,功不唐捐!

你可能感兴趣的:(面试,#,MQ,#,kafka,面试,rabbitmq,职场和发展)