Kafka_面试题

1. Kafka中的ISR、AR又代表什么?

AR:Assigned Replicas 所有副本,包括主
ISR:In-Sync Replicas 副本同步队列 (ISR由leader维护,follower从leader同步数据有一些延迟)
(包括延迟时间replica.lag.time.max.ms和延迟条数replica.lag.max.messages两个维度)

当前最新的版本0.10.x中只支持replica.lag.time.max.ms这个维度),任意一个超过阈值都会把follower剔除出ISR,存入OSR(Outof-Sync Replicas)列表,新加入的follower也会先存放在OSR中。
AR=ISR+OSR。

2. Kafka中的HW、LEO等分别代表什么?

LEO:(Log End Offset)每个副本的最后条消息的offset
HW:(High Watermark)俗称高水位,一个分区中所有副本最小的offset

3. Kafka中是怎么体现消息顺序性的?

Kafka只能保证分区内消息顺序有序,无法保证全局有序
实际业务中:
1)一个 topic,一个 partition,一个 consumer,内部单线程消费,单线程吞吐量太低,一般不会用这个。
2)写 N 个内存 queue,具有相同 key 的数据都到同一个内存 queue;然后对于 N 个线程,每个线程分别消费一个内存 queue 即可,这样就能保证顺序性。

4. Kafka中的分区器、序列化器、拦截器是否了解?它们之间的处理顺序是什么?

拦截器(onSend onAcknowledgement)->序列化器->分区器

5. Kafka生产者客户端的整体结构是什么样子的?使用了几个线程来处理?分别是什么?

1个主线程,一个sender线程。主线程有拦截器(onSend onAcknowledgement)->序列化器->分区器,sender线程负责堆积(或到指定时间)发送数据到对应分区

6. 消费组中的消费者个数如果超过topic的分区,那么就会有消费者消费不到数据”这句话是否正确?

消费者个数如果超过topic的分区,那么就会有消费者消费不到数据,一个分区只能被一个消费者消费

7. 消费者提交消费位移时提交的是当前消费到的最新消息的offset还是offset+1?

offset+1,文件也是这样命名的

8. 有哪些情形会造成重复消费?

1)从生产者端:
ack 设置为 -1 ,Leader收到数据follower同步数据后 ,brocker准备返回ack的时候挂掉了,新选出的Leader则会出现重复发送的情况
2)从消费者端:
先消费后提交,消费完成以后offset没有提交成功,下次消费时则会导致重复

9. 那些情景会造成消息漏消费?

1)从生产者端:
ack 设置为 0或者1时
–为0时,无状态返回,不知道是否收到
–为1时,只有Leader收到就返回ack,此时Leader挂了,副本尚未同步,则会漏消费。
2)从消费者端:
先提交后消费时

10. 当你使用kafka-topics.sh创建(删除)了一个topic之后,Kafka背后会执行什么逻辑?

1、会在zookeeper中的/brokers/topics节点下创建一个新的topic节点,如:/brokers/topics/first
2、触发Controller的监听程序
3、kafka Controller 负责topic的创建工作,并更新metadata cache

11. topic的分区数可不可以增加减少?为什么?

可以增加,不能减少。

12. kafka producer如何优化打入速度

增加线程
提高 batch.size
增加更多 producer 实例
增加 partition 数
设置 acks=-1 时,如果延迟增大:可以增大 num.replica.fetchers(follower 同步数据的线程数)来调解;
跨数据中心的传输:增加 socket 缓冲区设置以及 OS tcp 缓冲区设置。

13. Kafka有内部的topic吗?如果有是什么?有什么所用?

__consumer_offsets:作用是保存 Kafka 消费者的位移信息

14. Kafka分区分配的概念?

1、range
2、Round-robin

15. 简述Kafka的日志目录结构?

一个Topic有多个partition,一个partition对应一个目录,目录命名 ,topic-分区id。
下面分多个segment目录,命名是以topic名称和开始消息的偏移量来命名的,目录主要有两类文件log和index文件。

16. 如果我指定了一个offset,Kafka Controller怎么查找到对应的消息?

通过 offset找到对应的segment目录,目录下找到index文件,再去log文件中获取消息

17. 聊一聊Kafka Controller的作用?

Kafka集群的管理者,依赖zookeeper
在Kafka早期版本,对于分区和副本的状态的管理依赖于zookeeper的Watcher和队列:每一个broker都会在zookeeper注册Watcher,所以zookeeper就会出现大量的Watcher, 如果宕机的broker上的partition很多比较多,会造成多个Watcher触发,造成集群内大规模调整;每一个replica都要去再次zookeeper上注册监视器,当集群规模很大的时候,zookeeper负担很重。这种设计很容易出现脑裂和羊群效应以及zookeeper集群过载。
新版本该变了这种设计,使用KafkaController,只有KafkaController
Leader会向zookeeper上注册Watcher,其他broker几乎不用监听zookeeper的状态变化
Kafka集群中多个broker,有一个会被选举为controller leader,负责管理整个集群中分区和副本的状态,比如partition的leader 副本故障,由controller 负责为该partition重新选举新的leader 副本;当检测到ISR列表发生变化,有controller通知集群中所有broker更新其MetadataCache信息;或者增加某个topic分区的时候也会由controller管理分区的重新分配工作
当broker启动的时候,都会创建KafkaController对象,但是集群中只能有一个leader对外提供服务,这些每个节点上的KafkaController会在指定的zookeeper路径下创建临时节点,只有第一个成功创建的节点的KafkaController才可以成为leader,其余的都是follower。当leader故障后,所有的follower会收到通知,再次竞争在该路径下创建节点从而选举新的leader(先到先得)

18. Kafka中有那些地方需要选举?这些地方的选举策略又有哪些?

1、KafkaController选举的时候,先到先得
2、分区的副本选Leader的时候,从ISR中获取

19. 失效副本是指什么?有那些应对措施?

踢出ISR的那些OSR。从HW截断,然后同步Leader

20. Kafka的那些设计让它有如此高的性能?

1、分区
2、顺序
3、零拷贝

Kafka相关的面试题涵盖了众多方面,包括Kafka的设计、据传输、节点判断、消息顺序性、消费组、分区等等。以下是一些常见的Kafka面试题: 1. Kafka的设计是什么样的? Kafka是一个分布式流处理平台,主要由生产者、消费者和Broker组成。生产者将据发送到Broker,消费者从Broker订阅并消费据。Kafka使用分区来实现可扩展性和容错性。 2. 据传输的事物定义有哪三种? Kafka支持事务,有三种事务定义:生产者事务、消费者事务和流事务。生产者事务用于确保发送到Kafka的消息在提交事务之前不会被其他消费者读取。消费者事务用于确保在事务提交之前消费的消息不会被其他消费者提交。流事务用于保证在流处理应用程序中对多个Kafka主题的读写操作的原子性。 3. Kafka判断一个节点是否还活着有哪两个条件? Kafka判断一个节点是否还活着主要有两个条件:心跳和元据。心跳是指Kafka节点定期向控制器发送心跳信号,以表明节点还存活。元据是指Kafka节点定期发送元据更新请求给控制器,以表明节点还能处理客户端请求。 4. producer是否直接将据发送到broker的leader(主节点)? 是的,生产者将据直接发送到broker的leader节点。leader节点负责接收和写入据,然后将据复制到其他follower节点以实现据的冗余和容错性。 5. Kafka consumer是否可以消费据或者是Push模式? Kafka的consumer可以以Pull模式或者Push模式消费据。在Pull模式中,消费者主动从broker拉取据。在Push模式中,broker将据推送给消费者。 希望以上回答对您有所帮助。如需了解更多详情,请参考相关面试资料。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Kafka面试题.pdf](https://download.csdn.net/download/qq_44273429/20700822)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [20道常见的kafka面试题以及答案](https://blog.csdn.net/wanghaiping1993/article/details/125346010)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [Kafka常见面试题(附个人解读答案+持续更新)](https://blog.csdn.net/C_Xiang_Falcon/article/details/100917145)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值