又是一个毕业季,又是到了各位代码小白紧张刺激的找工作环节。面对大数据的面试。你是不是也表现得很忐忑。担心自己不会答怎么办。没关系。你们的勇勇带着自己面试中被问到的一些问题来了。本期让我们一起来看一下面试中被问到的知识点——KAFKA
1.Kafka概述
kafka是一个分布式发布-订阅消息的消息队列,可以处理大量数据,使得消息从一个端点传递到另一个端点,Kafka适合离线和在线消息消费,kafka消息保留在磁盘上,并在集群内复制以防数据丢失
2.为什么要选择kafka,(优点)
1.可靠性:kafka是分布式,分区,复制和容错的
2.可扩展性:kafka消息传递系统轻松缩放,无需停机
3.分布式:日志的分区partition在Kafka集群的服务器上
4.耐用性:kafka使用分布式提交日志,这意味着消息会尽可能快的保存在磁盘上,因此它是持久的
5.性能:kafka对于发布和订阅消息都具有高吞吐量,即使存储许多TB的消息,它也保持稳定的性能
3.4Kafka基础架构
Producer:生产者,将客户端生产的消息发送到kafka中,支持消息的异步发送和批量发送
Broker:服务代理节点,集群中的一台服务器就是一个broker,同一个topic的消息可以分布在多个broker中
Consumer:消费者,接受消息,用于相应的业务逻辑
Zookeeper:用于在集群中不同节点之间的通信,在kafka中,它被用于提交偏移量,如果节点在任何情况下失败了,它可以从之前提交的偏移量中获取
Consumer Group:消费者组,指的是多个消费者共同组成一个组来消费一个 Topic 中的消息
4.Kafka-kraft模式的优点(最少说出3点) [面试重点]
上图为 Kafka 现有架构,元数据在 zookeeper 中,运行时动态选举 controller,由
controller 进行 Kafka 集群管理。右图为 kraft 模式架构(实验性),不再依赖 zookeeper 集群,而是用三台 controller 节点代替 zookeeper,元数据保存在 controller 中,由 controller 直接进行 Kafka 集群管理。
- Kafka 不再依赖外部框架,而是能够独立运行;
- controller 管理集群时,不再需要从 zookeeper 中先读取数据,集群性能上升;
- 由于不依赖 zookeeper,集群扩展时不再受到 zookeeper 读写能力限制;
- controller 不再动态选举,而是由配置文件规定。这样我们可以有针对性的加强
- controller 节点的配置,而不是像以前一样对随机 controller 节点的高负载束手无策。