面试题:Kafka消息队列会丢数据么?

Mr.zhuMr.zhu2025-05-26 10:40:46来源:优站库 (www.uzkoo.com)阅读:20

 

 

 

熟悉Apache 大数据开发技术栈的朋友都知道 Kafka 在大数据开发中的作用,所以面试中会遇到相关问题。

这个问题问的非常好,所以有必要记录一下。对从事大数据开发的工程师来说也可以借鉴。

Kafka通常用于两大类应用:

· 构建实时流数据管道,在系统或应用程序之间可靠地获取数据

· 构建转换或响应数据流的实时流应用程序

下图可以看到Kafka 可以用于应用程序与数据库之间消息流传递的桥梁,可用于软件服务系统,数据分析及监控系统。

Kafka消息队列的应用

所以传递消息的可靠性是其非常关键的特性,同时也是软件服务质量的保证。

什么时候会丢数据能?

Kafka流媒体平台是发布和订阅消息的构架,类似于消息队列或企业消息传递系统。

由 Producer(生产),Broker(存储)和(Consumer)消费三部分构成。

 

生产者与消费者

先看Producer 的特性怎么用会数据丢失呢?

1. 当属性中的确认(ACK)不是all。

2. 当send后producer程序挂了丢数据(如果没用钩子,flush 也没来得及)

因为如下图所示 producer 先把数据放buffer里面,而且是异步的。Buffer里面的数据是内存中数据程序退出就没了。所以记得用钩子

 

Producer 中的 Buffer

下面是一个JAVA 8+关机钩子的例子:

 

钩子例子

总结:

其实这个问题遇到过,但是面试时候只想到了checkpoint 没有想到这里。

为什么呢?

只关注了自己最熟悉的方面来回答,并没有从系统构架上去思考

当我们把一个系统给它拆开分析的时候,就会有更多的思路,也就会有更全面的回答。

还有没有其它情况会丢数据呢?待续。

猜你想看

维修基金能否动用,怎么动用,动用后会产生什么结果
清香扑鼻的早餐,荤素搭配相得益彰,荷叶糯米饭氤氲着诱人的香气
颐和园的 “北京最美十大树王”古玉兰
一篇文章告诉你,多肉到底应该如何浇水
如何选轮胎?浅显易懂,一篇搞定
什么是古法手镯,与普通手镯有什么区别,值得花高价买吗
人们为什么爱看甜宠剧?
必革家 | 40㎡LOFT变身智能大三居 这里的“黑科技”也太多了
购房要付的“四金”你弄清楚了吗?
拉萨游记——那些让我感动的点点滴滴
车库酒中的“灰姑娘”,瓦兰佐2016获JS98分
《凡人修仙传:人界篇》手游战力提升攻略 战力怎么提升最好
闪电是如何形成的?它的威力有多大?带你了解大自然中的神奇现象
为什么离合器抬快了就会熄火?
打离婚官司注意,这类财产不属于共同财产!法律支持不用分给对方
五月,在职职工、退休老人待遇继续提升,4件事最好心里有数
女人接吻时在想什么?心理学:生理情绪比心理情绪更复杂
绿萝吊兰呼呼疯长,到底吃了啥灵丹妙药,20年经验老花农告诉你
什么是园土?不是园子里随便挖就能种,你用对了吗?
两面神”白矮星!天文学家首次发现“双面”星球:或捕捉到其罕见演化过程

推荐站点