最新Kafka面试题【附答案解析】Kafka面试题及答案,Kafka最新面试题及答案,Kafka面试题新答案已经全部更新完了,有些答案是自己总结的,也有些答案是在网上搜集整理的。这些答案难免会存在一些错误,仅供大家参考。如果发现错误还望大家多多包涵,不吝赐教,谢谢~

如果不背 Kafka面试题的答案,肯定面试会挂!

这套Kafka面试题大全,希望对大家有帮助哈~

博主已将以下这些面试题整理成了一个面试手册,是PDF版的

1、在生产者中,何时发生QueueFullException?

每当Kafka生产者试图以代理的身份在当时无法处理的速度发送消息时,通常都会发生QueueFullException。但是,为了协作处理增加的负载,用户需要添加足够的代理,因为生产者不会阻止。

2、如何估算Kafka集群的机器数量?

1、 该题也算是SRE的送分题吧,对于SRE来讲,任何生产的系统第一步需要做的就是容量预估以及集群的架构规划,实际上也就是机器数量和所用资源之间的关联关系,资源通常来讲就是CPU,内存,磁盘容量,带宽。但需要注意的是,Kafka因为独有的设计,对于磁盘的要求并不是特别高,普通机械硬盘足够,而通常的瓶颈会出现在带宽上。

2、 在预估磁盘的占用时,你一定不要忘记计算副本同步的开销。如果一条消息占用1KB的磁盘空间,那么,在有3个副本的主题中,你就需要3KB的总空间来保存这条消息。同时,需要考虑到整个业务Topic数据保存的最大时间,以上几个因素,基本可以预估出来磁盘的容量需求。

3、 需要注意的是:对于磁盘来讲,一定要提前和业务沟通好场景,而不是等待真正有磁盘容量瓶颈了才去扩容磁盘或者找业务方沟通方案。

4、 对于带宽来说,常见的带宽有1Gbps和10Gbps,通常我们需要知道,当带宽占用接近总带宽的90%时,丢包情形就会发生。

3、分区Leader选举策略有几种?

分区的Leader副本选举对用户是完全透明的,它是由Controller独立完成的。你需要回答的是,在哪些场景下,需要执行分区Leader选举。每一种场景对应于一种选举策略。

1、 OfflinePartition Leader选举:每当有分区上线时,就需要执行Leader选举。所谓的分区上线,可能是创建了新分区,也可能是之前的下线分区重新上线。这是最常见的分区Leader选举场景。

2、 ReassignPartition Leader选举:当你手动运行Kafka-reassign-partitions命令,或者是调用Admin的alterPartitionReassignments方法执行分区副本重分配时,可能触发此类选举。假设原来的AR是[1,2,3],Leader是1,当执行副本重分配后,副本集合AR被设置成[4,5,6],显然,Leader必须要变更,此时会发生Reassign Partition Leader选举。

3、 PreferredReplicaPartition Leader选举:当你手动运行Kafka-preferred-replica-election命令,或自动触发了Preferred Leader选举时,该类策略被激活。所谓的Preferred Leader,指的是AR中的第一个副本。比如AR是[3,2,1],那么,Preferred Leader就是3。

4、 ControlledShutdownPartition Leader选举:当Broker正常关闭时,该Broker上的所有Leader副本都会下线,因此,需要为受影响的分区执行相应的Leader选举。

这4类选举策略的大致思想是类似的,即从AR中挑选首个在ISR中的副本,作为新Leader。

4、Kafka中有哪几个组件?

Kafka最重要的元素是:

主题:Kafka主题是一堆或一组消息。生产者:在Kafka,生产者发布通信以及向Kafka主题发布消息。消费者:Kafka消费者订阅了一个主题,并且还从主题中读取和处理消息。经纪人:在管理主题中的消息存储时,我们使用Kafka Brokers。

5、:24, 22

6、系统工具有哪些类型?

系统工具有三种类型:1.Kafka迁移工具:它有助于将代理从一个版本迁移到另一个版本。2.Mirror Maker:Mirror Maker工具有助于将一个Kafka集群的镜像提供给另一个。3.消费者检查:对于指定的主题集和消费者组,它显示主题,分区,所有者。

7、比较传统队列系统与Apache Kafka

让我们比较一下传统队列系统与Apache Kafka的功能:消息保留 传统的队列系统 - 它通常从队列末尾处理完成后删除消息。 Apache Kafka中,消息即使在处理后仍然存在。这意味着Kafka中的消息不会因消费者收到消息而被删除。基于逻辑的处理传统队列系统不允许基于类似消息或事件处理逻辑。Apache Kafka允许基于类似消息或事件处理逻辑。

8、连接器API的作用是什么?

一个允许运行和构建可重用的生产者或消费者的API,将Kafka主题连接到现有的应用程序或数据系统,我们称之为连接器API。Apache Kafka对于新手的面试

9、消息队列的作用

解耦

快递小哥手上有很多快递需要送,他每次都需要先电话一一确认收货人是否有空、哪个时间段有空,然后再确定好送货的方案。这样完全依赖收货人了!如果快递一多,快递小哥估计的忙疯了……

如果有了便利店,快递小哥只需要将同一个小区的快递放在同一个便利店,然后通知收货人来取货就可以了,这时候快递小哥和收货人就实现了解耦!

异步

快递小哥打电话给我后需要一直在你楼下等着,直到我拿走你的快递他才能去送其他人的。快递小哥将快递放在小芳便利店后,又可以干其他的活儿去了,不需要等待你到来而一直处于等待状态。提高了工作的效率。

削峰

假设双十一我买了不同店里的各种商品,而恰巧这些店发货的快递都不一样,有中通、圆通、申通、各种通等……

更巧的是他们都同时到货了!中通的小哥打来电话叫我去北门取快递、圆通小哥叫我去南门、申通小哥叫我去东门。我一时手忙脚乱……

我们能看到在系统需要交互的场景中,使用消息队列中间件真的是好处多多,基于这种思路,就有了丰巢、菜鸟驿站等比小芳便利店更专业的“中间件”了。

10、数据传输的事物定义有哪三种?

数据传输的事务定义通常有以下三种级别:

1、 最多一次: 消息不会被重复发送,最多被传输一次,但也有可能一次不传输

2、 最少一次: 消息不会被漏发送,最少被传输一次,但也有可能被重复传输、(3)精确的一次(Exactly once): 不会漏传输也不会重复传输,每个消息都传输被一次而

3、 且仅仅被传输一次,这是大家所期望的

11、Kafka Producer如何优化写入速度?

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

12、生产者中,什么情况下会发生 QueueFullException?

每当Kafka生产者试图以代理的身份在当时无法处理的速度发送消息时,通常都会发生QueueFullException。但是,为了协作处理增加的负载,用户需要添加足够的代理,因为生产者不会阻止。

13、数据传输的事务定义有哪三种?

和MQTT的事务定义一样都是3种

1、 最多一次: 消息不会被重复发送,最多被传输一次,但也有可能一次不传输

2、 最少一次: 消息不会被漏发送,最少被传输一次,但也有可能被重复传输.

3、 精确的一次(Exactly once): 不会漏传输也不会重复传输,每个消息都传输被一次而且仅仅被传输一次,这是大家所期望的

14、Kafka Unclean 配置代表什么?会对 spark streaming 消费有什么影响?

unclean.leader.election.enable 为 true 的话,意味着非 ISR 集合的 broker 也可以参与选举,这样有可能就会丢数据,spark streaming在消费过程中拿到的 end offset 会突然变小,导致 spark streaming job 挂掉。如果 unclean.leader.election.enable 参数设置为 true,就有可能发生数据丢失和数据不一致的情况,Kafka 的可靠性就会降低;而如果 unclean.leader.election.enable 参数设置为 false,Kafka 的可用性就会降低。

15、Kafka 中 Consumer Group 是什么概念?

同样是逻辑上的概念,是Kafka实现单播和广播两种消息模型的手段。同一个topic的数据,会广播给不同的group;同一个group中的worker,只有一个worker能拿到这个数据。换句话说,对于同一个topic,每个group都可以拿到同样的所有数据,但是数据进入group后只能被其中的一个worker消费。group内的worker可以使用多线程或多进程来实现,也可以将进程分散在多台机器上,worker的数量通常不超过partition的数量,且二者最好保持整数倍关系,因为Kafka在设计时假定了一个partition只能被一个worker消费(同一group内)。

16、什么是生产者?

生产者的主要作用是将数据到他们选择的主题上。基本上,它的职责是选择要分配给主题内分区的记录。

17、Kafka 与传统消息系统之间有三个关键区别

1、 Kafka 持久化日志,这些日志可以被重复读取和无限期保留

2、 Kafka 是一个分布式系统:它以集群的方式运行,可以灵活伸缩,在内部通过复制数据

3、 提升容错能力和高可用性

4、 Kafka 支持实时的流式处理

18、Kafka 中是怎么体现消息顺序性的?

Kafka 每个 partition 中的消息在写入时都是有序的,消费时,每个 partition 只能被每一个 group 中的一个消费者消费,保证了消费时也是有序的。整个 topic 不保证有序。如果为了保证 topic 整个有序,那么将 partition 调整为1.

19、Apache Kafka的缺陷

Kafka的局限性是:1.没有完整的监控工具集2.消息调整的

20、解释Apache Kafka用例?

Apache Kafka有很多用例,例如:

Kafka指标可以使用Kafka进行操作监测数据。此外,为了生成操作数据的集中提要,它涉及到从分布式应用程序聚合统计信息。Kafka日志聚合 从组织中的多个服务收集日志。流处理在流处理过程中,Kafka的强耐久性非常有用。Apache Kafka对于新手的面试

21、在生产者中,何时发生QueueFullException?

每当Kafka生产者试图以代理的身份在当时无法处理的速度发送消息时,通常都会发生QueueFullException。但是,为了协作处理增加的负载,用户需要添加足够的代理,因为生产者不会阻止。

22、如何估算Kafka集群的机器数量?

1、 该题也算是SRE的送分题吧,对于SRE来讲,任何生产的系统第一步需要做的就是容量预估以及集群的架构规划,实际上也就是机器数量和所用资源之间的关联关系,资源通常来讲就是CPU,内存,磁盘容量,带宽。但需要注意的是,Kafka因为独有的设计,对于磁盘的要求并不是特别高,普通机械硬盘足够,而通常的瓶颈会出现在带宽上。

2、 在预估磁盘的占用时,你一定不要忘记计算副本同步的开销。如果一条消息占用1KB的磁盘空间,那么,在有3个副本的主题中,你就需要3KB的总空间来保存这条消息。同时,需要考虑到整个业务Topic数据保存的最大时间,以上几个因素,基本可以预估出来磁盘的容量需求。

3、 需要注意的是:对于磁盘来讲,一定要提前和业务沟通好场景,而不是等待真正有磁盘容量瓶颈了才去扩容磁盘或者找业务方沟通方案。

4、 对于带宽来说,常见的带宽有1Gbps和10Gbps,通常我们需要知道,当带宽占用接近总带宽的90%时,丢包情形就会发生。

23、分区Leader选举策略有几种?

分区的Leader副本选举对用户是完全透明的,它是由Controller独立完成的。你需要回答的是,在哪些场景下,需要执行分区Leader选举。每一种场景对应于一种选举策略。

1、 OfflinePartition Leader选举:每当有分区上线时,就需要执行Leader选举。所谓的分区上线,可能是创建了新分区,也可能是之前的下线分区重新上线。这是最常见的分区Leader选举场景。

2、 ReassignPartition Leader选举:当你手动运行Kafka-reassign-partitions命令,或者是调用Admin的alterPartitionReassignments方法执行分区副本重分配时,可能触发此类选举。假设原来的AR是[1,2,3],Leader是1,当执行副本重分配后,副本集合AR被设置成[4,5,6],显然,Leader必须要变更,此时会发生Reassign Partition Leader选举。

3、 PreferredReplicaPartition Leader选举:当你手动运行Kafka-preferred-replica-election命令,或自动触发了Preferred Leader选举时,该类策略被激活。所谓的Preferred Leader,指的是AR中的第一个副本。比如AR是[3,2,1],那么,Preferred Leader就是3。

4、 ControlledShutdownPartition Leader选举:当Broker正常关闭时,该Broker上的所有Leader副本都会下线,因此,需要为受影响的分区执行相应的Leader选举。

这4类选举策略的大致思想是类似的,即从AR中挑选首个在ISR中的副本,作为新Leader。

24、Kafka中有哪几个组件?

Kafka最重要的元素是:

主题:Kafka主题是一堆或一组消息。生产者:在Kafka,生产者发布通信以及向Kafka主题发布消息。消费者:Kafka消费者订阅了一个主题,并且还从主题中读取和处理消息。经纪人:在管理主题中的消息存储时,我们使用Kafka Brokers。

25、:24, 22

26、系统工具有哪些类型?

系统工具有三种类型:1.Kafka迁移工具:它有助于将代理从一个版本迁移到另一个版本。2.Mirror Maker:Mirror Maker工具有助于将一个Kafka集群的镜像提供给另一个。3.消费者检查:对于指定的主题集和消费者组,它显示主题,分区,所有者。

27、比较传统队列系统与Apache Kafka

让我们比较一下传统队列系统与Apache Kafka的功能:消息保留 传统的队列系统 - 它通常从队列末尾处理完成后删除消息。 Apache Kafka中,消息即使在处理后仍然存在。这意味着Kafka中的消息不会因消费者收到消息而被删除。基于逻辑的处理传统队列系统不允许基于类似消息或事件处理逻辑。Apache Kafka允许基于类似消息或事件处理逻辑。

28、连接器API的作用是什么?

一个允许运行和构建可重用的生产者或消费者的API,将Kafka主题连接到现有的应用程序或数据系统,我们称之为连接器API。Apache Kafka对于新手的面试

29、消息队列的作用

解耦

快递小哥手上有很多快递需要送,他每次都需要先电话一一确认收货人是否有空、哪个时间段有空,然后再确定好送货的方案。这样完全依赖收货人了!如果快递一多,快递小哥估计的忙疯了……

如果有了便利店,快递小哥只需要将同一个小区的快递放在同一个便利店,然后通知收货人来取货就可以了,这时候快递小哥和收货人就实现了解耦!

异步

快递小哥打电话给我后需要一直在你楼下等着,直到我拿走你的快递他才能去送其他人的。快递小哥将快递放在小芳便利店后,又可以干其他的活儿去了,不需要等待你到来而一直处于等待状态。提高了工作的效率。

削峰

假设双十一我买了不同店里的各种商品,而恰巧这些店发货的快递都不一样,有中通、圆通、申通、各种通等……

更巧的是他们都同时到货了!中通的小哥打来电话叫我去北门取快递、圆通小哥叫我去南门、申通小哥叫我去东门。我一时手忙脚乱……

我们能看到在系统需要交互的场景中,使用消息队列中间件真的是好处多多,基于这种思路,就有了丰巢、菜鸟驿站等比小芳便利店更专业的“中间件”了。

30、数据传输的事物定义有哪三种?

数据传输的事务定义通常有以下三种级别:

1、 最多一次: 消息不会被重复发送,最多被传输一次,但也有可能一次不传输

2、 最少一次: 消息不会被漏发送,最少被传输一次,但也有可能被重复传输、(3)精确的一次(Exactly once): 不会漏传输也不会重复传输,每个消息都传输被一次而

3、 且仅仅被传输一次,这是大家所期望的

如果不背 Kafka面试题的答案,肯定面试会挂!

更多Kafka面试题 60道

01、Kafka为什么那么快?

02、Kafka 消息是采用 Pull 模式,还是 Push 模式?

03、Kafka Producer 写数据,ACK 为 0,1,-1 时分别代表什么?

04、ISR在Kafka环境中代表什么?

05、Kafka的一些最显著的应用。

06、kafaka 生产数据时数据的分组策略

07、Leader总是-1,怎么破?

08、Java在Apache Kafka中的重要性是什么?

09、什么是消费者组?

10、为什么需要消息系统,MySQL不能满足需求吗?

11、如何调优Kafka?

12、解释术语“Log Anatomy”

13、如果 Leader Crash 时,ISR为空怎么办

14、Kafka为什么不支持读写分离?

15、Kafka 存储在硬盘上的消息格式是什么?

16、:12,15,20

17、Kafka的哪些场景中使用了零拷贝(Zero Copy)?

18、为什么要使用 Kafka?为什么要使用消息队列?

19、Kafka中的 ISR、AR 又代表什么?ISR 的伸缩又指什么?

20、如何控制消费的位置

21、Kafka存在那些局限性?

22、Kafka Follower如何与Leader同步数据?

23、系统工具有哪些类型?

24、生产者中,什么情况下会发生 QueueFullException?

25、什么是消费者或用户?

26、能简单说一下rebalance过程吗?

27、producer 是否直接将数据发送到 broker 的 leader(主节点)?

28、流API的作用是什么?

29、Kafka 创建 Topic 时如何将分区放置到不同的 Broker 中

30、什么是Kafka中的地域复制?

31、什么是复制工具及其类型?

32、为什么Kafka的复制至关重要?

33、Rebalance有什么影响

34、消费者如何不自动提交偏移量,由应用提交?

35、Apache Kafka是什么?

36、如何估算Kafka集群的机器数量?

37、Kafka 中 Consumer Group 是什么概念?

38、解释偏移的作用。

39、为什么Kafka不支持读写分离?

40、解释下Kafka中位移(offset)的作用

41、Kafka和Flume之间的主要区别是什么?

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

43、消费者API的作用是什么?

44、生产者和消费者的命令行是什么?

45、如何获取topic主题的列表

46、消费者负载均衡策略

47、Kafka 的设计时什么样的呢?

48、解释多租户是什么?

49、Kafka 与传统消息系统之间有三个关键区别

50、启动Kafka服务器的过程是什么?

51、Apache Kafka的缺陷

52、解释生产者是什么?

53、Kafka什么情况下会rebalance

54、Kafka中有哪几个组件?

55、解释Kafka可以接收的消息最大为多少?

56、Apache Kafka是分布式流处理平台吗?如果是,你能用它做什么?

57、Kafka分布式(不是单机)的情况下,如何保证消息的顺序消费?

58、解释Apache Kafka用例?

59、传统的消息传递方法有哪些类型?

60、在生产者中,何时发生QueueFullException?

这套Kafka面试题大全,希望对大家有帮助哈~

博主已将以下这些面试题整理成了一个面试手册,是PDF版的

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐