Kafka经典面试题 附参考答案.docx
《Kafka经典面试题 附参考答案.docx》由会员分享,可在线阅读,更多相关《Kafka经典面试题 附参考答案.docx(12页珍藏版)》请在课桌文档上搜索。
1、无论是作为面试官,还是应聘者,我都接触过很多Kafka面试题。而在最近面试了很多候选人,发现写了熟悉Kafka,但是对于KaflCa相关的知识却是只知道大概用处,简单搭建和使用。我想说,虽然我们是SRE(可靠性工程师),但不论你是业务层的SRE还是基础设施层的SRE,我们都需要对业务方的使用场景有足够理解,或者对我们要提供的服务有足够的了解才行,这样你才能整体的保证你的业务连续性以及业务可靠性。因此,专门总结了如下经典的kafltopicpartition等meta数据;另外,还负责broker故障.现,partitionleader,而载均衡等功能2 .Kafka的设计时什么样的呢Kafka
2、将消息以topic为单位进行归纳将向Kafkatopic发布消息的程序成为ProdUCers.将预订topics并消费消息的程序成为consumer.Kafka以集群的方式运行,可以由一个或爹个服务组成,每个服务叫做一个broker.producers通过网络将消息发送到Kafka集群,集群向消费者提供消息。3 .为什么要使用kafka,为什么要使用消息队列?缓冲和削峰:上游数据时有突发流量,下游可能扛不住,或者下游没有足够多的机器来保证冗余,kafka在中间可以起到一个缓冲的作用,把消息暂存在kafka中,下游服务就可以按照自己的节奏进行慢慢处理。解耦和扩展性:项目开始的时候,并不能确定具体
3、需求。消息队列可以作为一个接口层,解耦重要的业务流程。只需要遵守约定,针对数据编程即可获取扩展能力。冗余:可以采用一对多的方式,一个生产者发布消息,可以被多个订阅topic的服务消费到,供多个毫无关联的业务使用。健壮性:消息队列可以堆积请求,所以消费端业务即使短时间死掉,也不会影响主要业务的正常进行。异步通信:很多时候,用户不想也不需要立即处理消息。消息队列提供了异步处理机制,允许用户把一个消息放入队列,但并不立即处理它。想向队列中放入多少消息就放多少,然后在需要的时候再去处理它们。4 .数据传输的事物定义有哪三种?数据传输的事务定义通常有以下三种级别:(1)最多一次:消息不会被重复发送,最多
4、被传输一次,但也有可能一次不传输(2)最少一次:消息不会被漏发送,最少被传输一次,但也有可能被重复传输.(3)精确的一次(EXaCtIyOnCe):不会漏传输也不会重复传输,每个消息都传输被一次而且仅仅被传输一次,这是大家所期望的5 .Kafka判断一个节点是否还活着有那两个条件?(1)节点必须可以维护和ZooKeeper的连接,Zookeeper通过心跳机制检查每个节点的连接(2)如果节点是个follower,他必须能及时的同步leader的写操作,延时不能太久6 .Kafka中的ISR、AR又代表什么?ISR的伸缩又指什么IsRiIn-SyncReplicas副本同步队列ARzAssign
5、edReplicas所有副本ISR是由leader维护,follower从leader同步数据有一些延迟(包括延迟时间replica.lag.time.max.ms和延迟条数replica.lag.max.messages两个维度,当前最新的版本0.10.x中只支持replica.lag.time.max.ms这个维度),任意一个超过阈值都会把follower剔除出ISR,存入C)SR(Outof-SyncReplicas)列表,新加入的follower也会先存放在C)SR中。AR=ISR+0SRo7 .kafka中的broker是干什么的broker是消息的代理,Producers往Brok
6、ers里面的指定Topic中写消息,Consumers从Brokers里面拉取指定Topic的消息,然后进行业务处理,broker在中间起到一个代理保存消息的中转站。8 .producer是否直接将数据发送到broker的Ieader(主节点)?producer直接将数据发送到broker的Ieader(主节点),不需要在多个节点进行分发,为了帮助producer做到这点,所有的KaflCa节点都可以及时的告知:咖些节点是活动的,目标topic目标分区的Ieader在哪。这样PrOdUCer就可以直接将消息发送到目的地了9 .什么情况下一个broker会从isr中踢出去leader会维护一个与
7、其基本保持同步的Replica列表,该列表称为ISR(in-syncReplica),每个Partition都会有一个ISR,而且是由Ieader动态维护,如果一个follower比一个leader落后太多,或者超过一定时间未发起数据复制请求,则leader将其重ISR中移除。10、Kafaconsumer是否可以消费指定分区消息?Kafkaconsumer消费消息时,向broker发出fetch”请求去消费特定分区的消息,consumer指定消息在日志中的偏移量(offset),就可以消费从这个位置开始的消息,customer拥有了OffSet的控制权,可以向后回滚去重新消费之前的消息,这是
8、很有意义的HKafka消息是采用PIIn模式,还是PUSh模式?Kafka最初考虑的问题是,customer应该从brokes拉取消息还是brokers将消息推送到COnSUmer,也就是PUIl还PUSh。在这方面,Kafka遵循了一种大部分消息系统共同的传统的设计:ProdUCer将消息推送到broker,consumer从broker拉取消息一些消息系统比如Scribe和ApacheFlume采用了push模式,将消息推送到下游的COnSUmer。这样做有好处也有坏处:由broker正定消息推送的速率,对于不同消费速率的consumer就不太好处理了。消息系统都致力于让consumer以
9、最大的速率最快速的消费消息,但不幸的是,push模式下,当broker推送的速率远大于consumer消费的速率时,consumer恐怕就要崩溃了。最终Kafka还是选取了传统的pull模式Pull模式的另外一个好处是consumer可以自主决定是否批量的从broker拉取数据。Push模式必须在不知道下游consumer消费能力和消费策略的情况下决定是立即推送每条消息还是缓存之后批量推送。如果为了避免consumer崩溃而采用较低的推送速率,将可能导致一次只推送较少的消息而造成浪费。Pull模式下,consumer就可以根据自己的消费能力去决定这些策略PUII有个缺点是,如果broker没有
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Kafka经典面试题 附参考答案 Kafka 经典 试题 参考答案
链接地址:https://www.desk33.com/p-1426296.html