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

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

 

 

 

熟悉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 没有想到这里。

为什么呢?

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

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

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

猜你想看

为什么“买买买”总停不下来?冲动消费时,大脑究竟在想什么?
中国最“懒”的地方 此生必去......
电动车骑多久才考虑换新?有的车建议一年就换,你的车骑多久换?
车子停久了,蓄电池会亏电,正确的方法是这样的
人力资源的三大支柱是什么?这篇文章告诉你
热射病就是中暑吗?不出门就不会得热射病了吗?盘点8大误区
瓷砖美缝“7不要”,亲自做过一次,才知道装修美缝有多少坑
教你如何识别我军3等10级的军官军衔,记住这3个要素就行了
逆水寒手游卜算天机怎么获得 卜算天机技能解锁攻略[多图]
“全款买车”和“贷款买车”的差距,真不是一般大
加油时,“一次加满”和“只加200”,哪种更省钱呢?
民间借贷中借条上的这几个陷阱你知道吗?文中附解决办法
多大排量的汽车在开空调时没有明显拖拽感?
柠檬水的6种喝法和20种妙用
如何选择含益生菌和益生元的乳制品
汽车4S店首保套路,车主们直呼太真实了
国庆想去哪?九寨沟、德天大瀑布、雨岔等十几处宝地供你选择
有残疾证的职工如果是这六种情况,最早可以提前10年申请病退
房子玄关是指哪里?你真的懂玄关的用处和设计吗?
哪些食物和药物不能同食?药剂专家提醒您,春节饮食禁忌

推荐站点