Kafka经典面试题 附参考答案.docx
《Kafka经典面试题 附参考答案.docx》由会员分享,可在线阅读,更多相关《Kafka经典面试题 附参考答案.docx(12页珍藏版)》请在优知文库上搜索。
1、无论是作为面试官,还是应聘者,我都接触过很多Kafka面试题。而在最近面试了很多候选人,发现写了熟悉Kafka,但是对于KaflCa相关的知识却是只知道大概用处,简单搭建和使用。我想说,虽然我们是SRE(可靠性工程师),但不论你是业务层的SRE还是基础设施层的SRE,我们都需要对业务方的使用场景有足够理解,或者对我们要提供的服务有足够的了解才行,这样你才能整体的保证你的业务连续性以及业务可靠性。因此,专门总结了如下经典的kafla面试详解。以下面试题,参考胡夕胡大的Kafka核心源码解读,对相关的知识进行了补充和思考。基础题目ApacheKafka是什么?能问这道题,主要是想看候选人对于Kaf
2、ka的使用场景以及定位认知理解有多深,同时候可以知道候选人对于这项技术的关注度。我们都知道,在开源软件中,大部分软件随着用户量的增加,整个软件的功能和定位也有了新的变化,而APaCheKafka一路发展到现在,已经由最初的分布式提交日志系统逐渐演变成了实时流处理框架。因此,这道题你最好这么回答:ApachKafka是一款分布式流处理平台,用于实时构建流处理应用。它有一个核心的功能广为人知,即作为企业级的消息引擎被广泛使用(通常也会称之为消息总线messagebus)o关于分布式流处理平台,其实从它官方的1.ogo以及Slogan我们就很容易看出来。什么是消费者组?消费者组是Kafka独有的概念
3、,如果面试官问这个,就说明他对此是有一定了解的。胡大给的标准答案是:官网上的介绍言简意赅,即消费者组是Kafka提供的可扩展且具有容错性的消费者机制。但实际上,消费者组(ConSUmerGroUP)其实包含两个概念,作为队列,消费者组允许你分割数据处理到一组进程集合上(即一个消费者组中可以包含多个消费者进程,他们共同消费该t。PiC的数据),这有助于你的消费能力的动态调整;作为发布-订阅模型(PUbliSh-SUbSCribe),Kafka允许你将同一份消息广播到多个消费者组里,以此来丰富多种数据使用场景。需要注意的是:在消费者组中,多个实例共同订阅若干个主题,实现共同消费。同一个组下的每个实
4、例都配置有相同的组ID,被分配不同的订阅分区。当某个实例挂掉的时候,其他实例会自动地承担起它负责消费的分区。因此,消费者组在一定程度上也保证了消费者程序的高可用性。KafkaCluster-Server1-pServer2PP3p1P2/X、/注意:消费者组的题目,能够帮你在某种程度上掌控下面的面试方向。如果你擅长位移值原理(OffSet),就不妨再提一下消费者组的位移提交机制;如果你擅长KafkaBroker,可以提一下消费者组与BrOker之间的交互;如果你擅长与消费者组完全不相关的Producer,那么就可以这么说:“消费者组要消费的数据完全来自于ProdUCer端生产的消息,我对PrO
5、dUCer还是比较熟悉的。”总之,你总得对ConSUmergrOUP相关的方向有一定理解,然后才能像面试官表名你对某一块很理解。在Kafka中,ZooKeeper的作用是什么?这道题,也是我经常会问候选人的题,因为任何分布式系统中虽然都通过一些列的算法去除了传统的关系型数据存储,但是毕竟还是有些数据要存储的,同时分布式系统的特性往往是需要有一些中间人角色来统筹集群。比如我们在整个微服务框架中的Dubbo,它也是需要依赖一些注册中心或配置中心类的中间件的,以及云原生的Kubernetes使用etcd作为整个集群的枢纽。标准答案:目前,Kafka使用ZOoKeePer存放集群元数据、成员管理、CO
6、ntrOlIer选举,以及其他一些管理类任务。之后,等KIP-500提案完成后,Kafka将完全不再依赖于ZooKeeper0“存放元数据”是指主题分区的所有数据都保存在ZOOKeePer中,且以它保存的数据为权威,其他“人都要与它保持对齐。“成员管理”是指Broker节点的注册、注销以及属性变更,等等。“ContIer选举”是指选举集群COnglIer,而其他管理类任务包括但不限于主题删除、参数配置等。KIP-500思想,是使用社区自研的基于Raft的共识算法,替代ZOOKeeper,实现Controller自选举。解释下Kafka中位移(offset)的作用标准答案:在Kaflca中,每个
7、主题分区下的每条消息都被赋予了一个唯一的ID数值,用于标识它在分区中的位置。这个ID数值,就被称为位移,或者叫偏移量。一旦消息被写入到分区日志,它的位移值将不能被修改。答完这些之后,你还可以把整个面试方向转移到你希望的地方:如果你深谙BrOker底层日志写入的逻辑,可以强调下消息在日志中的存放格式如果你明白位移值一旦被确定不能修改,可以强调下“1.ogCleaner组件都不能影响位移值”这件事情如果你对消费者的概念还算熟悉,可以再详细说说位移值和消费者位移值之间的区别阐述下Kafka中的领导者副本(1.eaderReplica)和追随者副本(FollowerReplica)的区别推荐的答案:K
8、afka副本当前分为领导者副本和追随者副本。只有1.eader副本才能对外提供读写服务,响应Clients端的请求。Follower副本只是采用拉(PU1.1.)的方式,被动地同步1.eader副本中的数据,并且在1.eader副本所在的Broker宕机后,随时准备应聘1.eader副本。加分点:强调FollOWer副本也能对外提供读服务。自Kafka2.4版本开始,社区通过引入新的Broker端参数,允许Follower副本有限度地提供读服务。强调1.eader和Follower的消息序列在实际场景中不一致。通常情况下,很多因素可能造成1.eader和Follower之间的不同步,比如程序问
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Kafka经典面试题 附参考答案 Kafka 经典 试题 参考答案