Kafka相关面试题

作者&投稿:恽轮 (若有异议请与网页底部的电邮联系)
~

title: Kafka常见问题
date: 2020-04-01 16:25:49
update: 2020-04-01 20:31:30
excerpt: Kafka 面试中常见问题
toc_min_depth: 3
tags:

Kafka是一个分布式的基于发布/订阅模式的消息队列(Message Queue),主要应用于大数据实时处理领域。

位置

内容

kafka中的消费者在读取服务端的数据时,需要将服务端的磁盘文件通过网络发送到消费者进程,网络发送需要经过几种网络节点。如下图所示:

传统的读取文件数据并发送到网络的步骤如下:
(1)操作系统将数据从磁盘文件中读取到内核空间的页面缓存;
(2)应用程序将数据从内核空间读入用户空间缓冲区;
(3)应用程序将读到数据写回内核空间并放入socket缓冲区;
(4)操作系统将数据从socket缓冲区复制到网卡接口,此时数据才能通过网络发送。

通常情况下,Kafka的消息会有多个订阅者,生产者发布的消息会被不同的消费者多次消费,为了优化这个流程,Kafka使用了“零拷贝技术”,如下图所示:

“零拷贝技术”只用将磁盘文件的数据复制到页面缓存中一次,然后将数据从页面缓存直接发送到网络中(发送给不同的订阅者时,都可以使用同一个页面缓存),避免了重复复制操作。

如果有10个消费者,传统方式下,数据复制次数为4*10=40次,而使用“零拷贝技术”只需要1+10=11次,一次为从磁盘复制到页面缓存,10次表示10个消费者各自读取一次页面缓存。

传统的文件拷贝通常需要从用户态去转到核心态,经过read buffer,然后再返回到用户态的应用层buffer,然后再从用户态把数据拷贝到核心态的socket buffer,然后发送到网卡。

传统的数据传输需要多次的用户态和核心态之间的切换,而且还要把数据复制多次,最终才打到网卡。

如果减少了用户态与核心态之间的切换,是不是就会更快了呢?

此时我们会发现用户态“空空如也”。数据没有来到用户态,而是直接在核心态就进行了传输,但这样依然还是有多次复制。首先数据被读取到read buffer中,然后发到socket buffer,最后才发到网卡。虽然减少了用户态和核心态的切换,但依然存在多次数据复制。

如果可以进一步减少数据复制的次数,甚至没有数据复制是不是就会做到最快呢?

DMA

别急,这里我们先介绍一个新的武器:DMA。

DMA,全称叫Direct Memory Access,一种可让某些硬件子系统去直接访问系统主内存,而不用依赖CPU的计算机系统的功能。听着是不是很厉害,跳过CPU,直接访问主内存。传统的内存访问都需要通过CPU的调度来完成。如下图:

而DMA,则可以绕过CPU,硬件自己去直接访问系统主内存。如下图:

很多硬件都支持DMA,这其中就包括网卡。

零拷贝

回到本文中的文件传输,有了DMA后,就可以实现绝对的零拷贝了,因为网卡是直接去访问系统主内存的。如下图:

Java的零拷贝实现

在Java中的零拷贝实现是在FileChannel中,其中有个方法transferTo(position,fsize,src)。

传统的文件传输是通过java.io.DataOutputStream,java.io.FileInputStream来实现的,然后通过while循环来读取input,然后写入到output中。

零拷贝则是通过java.nio.channels.FileChannel中的transferTo方法来实现的。transferTo方法底层是基于操作系统的sendfile这个system call来实现的(不再需要拷贝到用户态了),sendfile负责把数据从某个fd(file descriptor)传输到另一个fd。

sendfile:

Java的transferTo:

传统方式与零拷贝性能对比

可以看出速度快出至少三倍多。Kafka在文件传输的过程中正是使用了零拷贝技术对文件进行拷贝。建议以后多用FileChannel的transferTo吧。

总结

需要用到的类:

KafkaProducer :需要创建一个生产者对象,用来发送数据

ProducerConfig :获取所需的一系列配置参数

ProducerRecord :每条数据都要封装成一个ProducerRecord对象

几个比较重要的配置项

//kafka集群,broker-list
props.put("bootstrap.servers", "hadoop102:9092");




Java面试:消息队列面试题汇总
5. 连接 RabbitMQ 的 Java 代码示例Java 连接可通过两种方式实现,具体代码需要在实际项目中实现。6. 消费与生产示例Java 中的消费者和生产者示例代码有助于理解其工作原理。7. 交换器类型与消息确认RabbitMQ 的交换器类型包括 direct、topic 和 fanout,消息确认机制保证消息被准确消费。8. Kafka 相关...

Flume面试题
以下面试题主要整理自尚硅谷相关文档 1. 如何实现Flume 数据传输的监控?使用第三方框架 Ganglia 实时监控 Flume。2. Flume 的Source,Sink,Channel 的作用及类型?Flume 的组件分工如下:Source:专门用来收集数据,处理各种类型、格式的日志数据,如 exec, netcat, spoolingdirectory 等。Channel:缓存收集...

下面哪个功能是kafka无法保证的
4、kafka消息的有序性,是采用消息键保序策略来实现的。一个topic,一个partition(分割),一个consumer,内部单线程消费,写N个内存queue,然后N个线程分别消费一个内存queue。Kafka面试题1、谈谈你对Kafka幂等性的理解?Producer的幂等性指的是当发送同一条消息时,数据在Server端只会被持久化一次,数据...

技术面试会问很多技术问题吗
最后,关键点来了,就是和面试官沟通了,有笔试的公司会让你做些面试题,没有笔试就直接和面试官聊了,下面是我和面试官沟通完之后记住的一些问题,分享给大家看一下,笔者一共记住了7个问题,好像还有两个问题实在想不起来了,如果大家有更恰当的回答一定要贴出来一起探讨和进步:1、介绍下自己?(几乎每家公司首先都会...

百度提前批-Java开发-面经-一面,已过关!
恭喜作者Ryb1n分享的百度Java开发一面面试经历,已经顺利过关。面试过程中,面试官并未开启摄像头,但态度亲和。面试内容涵盖了实习经历、个人项目(如SpringBoot和Kafka)、Java集合(ArrayList和HashMap的底层机制)、JVM内存区域和垃圾回收、数据库引擎知识(如InnoDB和Mysql索引)、SQL题(查询平均成绩在60...

Linux运维工程师会面试哪些
知识上面的答主说的很精准了,我来说说技巧。我本身是一名HR,负责新盟教育的Linux讲师招聘,所以我需要懂Linux基础知识,方便对面试者提问。首先,我会就应聘者简历上填写的内容进行,提问,一般会包括拿到的证书,有无经验,熟悉的技能,然后我的同事会提问专业内容。比如你写了擅长MySQL ,Jquery,boot...

springboot发展(springboot前景)
2017?年年初开始,Spring?Boot?基本上面试必问,现在流行的?Spring?Cloud?微服务也是基于?Spring?Boot,因此,所有的?Java?工程师都有必要掌握好?Spring?Boot。在此我向大家推荐一个架构学习交流圈。交流学习伪鑫:1253431195(里面有大量的面试题及答案)里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码...

大数据分析应该掌握哪些基础知识?
· 面试真题 Hadoop · Hadoop生态介绍 · Hadoop运行模式 · 源码编译 · HDFS文件系统底层详解 · DN&NN工作机制 · HDFS的API操作 · MapReduce框架原理 · 数据压缩 · Yarn工作机制 · MapReduce案例详解 · Hadoop参数调优 · HDFS存储多目录 · 多磁盘数据均衡 · LZO压缩 · Hadoop基准测试 ...

参加Java培训主要学习哪些内容?
平时还整理了面试题,总结了面试的经验和教训,方便大家提前准备。 在千锋的学习也2月有余,与班里大神相比实属小白。但我仍会坚持学下去,相信坚持到最后必然会有一个好的结局。在学习中,我对未来的职业道路也有了相对清晰的规划,虽然我的技术不是最好的,但我可以结合自己学习的管理专业,在日后,做好前端的管理...

义马市15367255417: 请问达人:此次住新宿东京王子酒店?此次住新宿东京王子酒店,请问达
徭治艾力: 西武新宿駅直结,JR线、地下鉄、小田急线、京王线的新宿駅徒步走5分钟,大江户线新宿西口站2分钟,建议还是从机场坐利木津巴士直达宾馆比较方便(如果对东京的交通不是很熟的话) 西瓜卡机场都可以退的,退之前把钱先用光...

义马市15367255417: 边缘叶 - 这是什么呢?长得像白菜一样的植物?长得像白菜一样的植物,这是什么
徭治艾力: 好漂亮!这是羽衣甘蓝,二年生草本,为食用甘蓝(卷心菜、包菜)的园艺变种.栽培一年植株形成莲座状叶丛,经冬季低温,于翌年开花、结实.总状花序顶生,花期4~5月,虫媒花,果实为角果,扁圆形,种子圆球形,褐色,千粒重4克左右. 园艺品种形态多样,按高度可分高型和矮型;按叶的形态分皱叶、不皱叶及深裂叶品种;按颜色,边缘叶有翠绿色、深绿色、灰绿色、黄绿色,中心叶则有纯白、淡黄、肉色、玫瑰红、紫红等品种

义马市15367255417: 大数据开发中最常用的编程语言
徭治艾力: 大数据仓库斯卡拉Scala是面向对象和函数式编程范例的完美结合. 它快速,强大,... 实际上,两个最受欢迎的大数据处理框架Apache Spark和Apache Kafka是在Scala上...

义马市15367255417: 大雪气节吃什么菜品好?
徭治艾力: 酸菜炖粉条 配料:酸菜一包(真空包装即可),带皮五花肉450克,粉条或粉丝,水,姜,糖,盐,麻油,葱花适量,蒜泥,酱油适量. 做法: 大锅中倒入水,约杯,五...

义马市15367255417: 大明山滑雪场到天目湖御水温泉怎么坐车
徭治艾力: 本数据来源于百度地图,最终结果以百度地图最新数据为准.驾车路线:全程约266.2公里起点:大明山滑雪场1.杭州市内驾车方案1) 从起点向正北方向出发,行驶2....

义马市15367255417: 下眼袋有脂肪颗粒应该怎样去除?
徭治艾力: 那个脂肪粒,早上喝点新鲜柠檬冲的水.最好是开水冲,晾凉之后服用,一周吧.就有明显改善了.试试吧. 望采纳了谢谢.

义马市15367255417: 杭州警官学院的具体位置这个学校是不是现在改名字了?离火车站有多远
徭治艾力: 浙江警察学院地址:杭州滨江区滨文路555号杭州火车站【城站】坐116到滨文路站下车;杭州火车南站坐K301到滨康路长江路口换116到滨文路站下车.

义马市15367255417: 卫星接收机高频头的作用与种类是什么?
徭治艾力: 高频头学名高频调谐器,又称降频器.它由低噪声放大器、 低噪声下变频器组成,其中的低噪声下变频器由混频器、本机振 荡器构成.卫星电视接收机高频头安装在卫星天线上,属室外 单元.高频头的主要作用是提高系统的灵敏度和进行频率变换.高频头按结构形状划分,可分为单极化分体式和双极性馈源 一体化两种.其中,双极性馈源一体化高频头种类较多,按本振 方式可分为单本振和双本振两种,按输出端口可分为单输出、双 输出、多输出等.

义马市15367255417: 无循环系统动物有哪些?
徭治艾力: 一个没有循环系统的动物的例子是扁形虫(扁形动物门).它们的体腔没有内层或流动性.它们有一个口直通错综复杂的消化系统.因为这种虫子太扁平了,消化的物质可以扩散到所有的细胞中.氧气可以从水中扩散到扁形虫的细胞中.因此无需循环系统,每一个细胞也能获得营养、水和氧气.

义马市15367255417: 有关数轴问题数轴上有一点A,它先向右平移4个单位长度,再向左平移?
徭治艾力: 【解】设点A表示的有理数为qq 4-6=-q(向右平移4个单位长度,相当于加上4,向左平移6个单位长度,相当于减去6)q=1

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网