大数据面试——Kafka篇
发现问题的小伙伴可以随时评论或私信我进行修改,愿意扩大题库的小伙伴也可以随时私信我嗷。愿大家都能找到期望的工作。
1.消息队列
1.1 消息队列的好处
- 解耦:允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束
- 可恢复性:系统的一部分组件失效时,不会影响到整个系统
- 缓冲:有助于控制和优化数据流经过系统的速度,解决生产消息和消费消息的处理速度不一致的情况
- 异步通信:很多时候,用户不想也不需要立即处理消息。消息队列提供了异步处理机制,允许用户把一个消息放入队列,但并不立即处理它
- 灵活性 & 峰值处理能力
1.2 消息队列的两种模式
- 点对点(一对一)
- 发布/订阅(一对多)
1.3 生产者消费者模式与发布订阅模式有何异同?
相同:都是一端生产数据,一端消费数据
不同:生产者-消费者,同一类别下,消费者拿到的都是一样的数据;发布-订阅,订阅者只拿自己感兴趣的数据。
1.4 Kafka作为消息队列,能够解决什么问题
(1)增加数据可靠性和持久性:采用了分布式复制机制,将消息副本分布到不同的Broker节点上,并确保故障发生时的数据可恢复性。
(2)高吞吐量和低延迟:处理大量的消息并能够提供毫秒级的延迟,适用于实时数据流处理和高负载场景。
(3)分布式流处理:Kafka不仅仅是一个消息队列,还是一个流处理平台。它支持对数据流进行实时处理、转换和聚合,可以构建复杂的流处理应用程序。
(4)水平扩展和负载均衡:通过增加Broker节点来处理更多的消息和请求。
(5)数据持久化和回溯能力:将消息持久化存储在磁盘上,保证数据的可靠性和持久性。
1.5 Kafka相比于其它消息组件有什么好处
高性能:单一的Kafka代理可以处理成千上万的客户端,每秒处理数兆字节的读写操作,Kafka性能远超过传统的消息队列
可扩展性:提供透明扩展,增加新的服务器进集群
容错性:每个分区有多个副本保障数据安全性
持久性:提供数据的磁盘存储
2.Kafka是什么
Kafka是一种分布式流处理平台,可以处理大规模动作流数据,主要应用于大数据实时处理,具有高吞吐量、低延迟和持久化的特点。
3.介绍下Kafka的作用以及使用场景
主要作用有:
(1)消息传递系统;因为它具有高吞吐量和低延迟的特点,能够在分布式系统中可靠地传输大量数据消息。
(2)流处理平台:Kafka支持实时数据流处理,在数据流中进行转换、聚合和分析,并将结果输出到其他系统中。
(3) 存储系统;Kafka可持久化存储,可以将数据持久保存在磁盘上,以便进行后续的处理和分析。
基于以上作用,可以应用于日志的收集聚合、实时检测分析系统、消息队列、事件驱动架构等场景。
4.Kafka的组件有哪些
Producer:生产者,就是向kafka broker发消息的客户端。
Consumer:消费者,向kafka broker取消息的客户端。
Consumer Group:消费者组,由1个或n个consumer组成,消费者组内每个消费者负责消费不同分区的数据,一个分区只能由一个组内消费者消费;消费者组之间互不影响。
Broker:一台kafka服务器就是一个broker。
Topic:消费主题,可以理解为一个队列,生产者和消费者面向的都是一个topic。
Partition:为了实现扩展性,一个topic可以分为多个partition,分布到多个broker(即服务器)上。
Replication:为了实现Partition的可靠性,一个Partition会保留多个Replication,分为一个leader和若干个follower;其中leader是Producer发送数据的对象,以及Consumer消费数据的对象。
Zookeeper:用于leader选举和follower信息同步、Broker的管理、Topic维护、生产者负载均衡、消费者负载均衡,在0.9版本之前还存储Customer的消费的offset。
5.讲下Kafka的整体结构
Kafka由生产者、Broker集群和消费者组成。
其中消息以Topic分类,每个Topic可以看做是一个队列,为提高其扩展性、安全性以及并发能力,每个Topic由多个Partition组成。
每个Partition有多个副本,分为leader和follower,leader负责读写,follower与leader数据保持同步,以做容错作用。同时为了防止文件过大,partition分为了多个segment,每个segment由一个.index文件和.log文件组成,存储在同一个文件夹:topic名字-分区号。
消费者则是以组为单位消费数据,消费者组内的消费者消费不同的Partition,每个Partition只能组内一个消费者消费,消费者组之间互不影响,消费者会记录每一次消费的offset。
同时还有zookeeper提供broker管理,topic管理,leader选举等服务。
6.Kafka的优缺点
6.1 优点
(1)吞吐量高,单机TPS约在百万条/秒
(2)时效性高,毫秒级
(3)可用性高,每个数据有多个副本
(4)消费者采用pull方式,通过控制能保证所有消息精准一次消费
(5)在日志领域比较成熟
6.2 缺点
(1)队列越多,load时间越长,发送消息响应时间变长。
(2)使用轮询方式时,实时性取决于轮询间隔时间。
(3)相对较大的存储需求:支持持久性,并且为