hello,你好鸭,我是Ethan,一名不断学习的码农,很高兴你能来阅读。
✔️目前博客主要更新Java系列、项目案例、计算机必学四件套等。
人生之义,在于追求,不在成败,勤通大道。加油呀!
个人主页:Ethan Yankang
专栏:史上最强八股文||Java项目
温馨提示:划到文末发现专栏彩蛋 点击这里直接传送
本篇概览:详细讲解了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!!!
愿大家都能学有所得,功不唐捐!