Kafka25道面试题总结(答案解析)

发布于:2023-02-02 ⋅ 阅读:(379) ⋅ 点赞:(0)

前言

Kafka 是一个分布式的、发布-订阅式消息中间件。最初是由 Linkedin 领英公司基于 Scala 和 Java 语言开发的分布式消息系统,现已捐献给 Apache 软件基金会。事实上 Kafka 不仅仅是一个消息队列(MQ),其已然成为一个开源的分布式流处理平台。Kafka 具有高吞吐、低延迟的特性,许多大数据处理系统比如 Storm、Spark、Flink 等都能很好地与之集成。

目录

1、Kafka是什么?

2、partition的数据文件(offffset,MessageSize,data)

3、数据文件分段 segment(顺序读写、分段命令、二分查找)

4、负载均衡(partition会均衡分布到不同broker上)

5、批量发送

6、压缩(GZIP或Snappy)

7、消费者设计

8、Consumer Group

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

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

11、consumer是推还是拉?

12、讲讲kafka维护消费状态跟踪的方法

13、讲一下主从同步。

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

15、Zookeeper对于Kafka的作用是什么?

16、Kafka判断一个节点是否还活着有那两个条件?

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

18、讲一讲kafka的ack的三种机制

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

20、消费者故障,出现活锁问题如何解决?

21、如何控制消费的位置?

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

23、kafka的高可用机制是什么?

24、kafka如何减少数据丢失?

25、kafka如何不消费重复数据?比如扣款,我们不能重复的扣?

1、Kafka是什么?

Kafka是一种高吞吐量、分布式、基于发布/订阅的消息系统,最初由LinkedIn公司开发,使用Scala语言编写,目前是Apache的开源项目。

broker: Kafka服务器,负责消息存储和转发

topic:消息类别,Kafka按照topic来分类消息

partition: topic的分区,一个topic可以包含多个partition, topic 消息保存在各个partition上4. offset:消息在日志中的位置,可以理解是消息在partition上的偏移量,也是代表该消息的唯一序号

Producer:消息生产者

Consumer:消息消费者

Consumer Group:消费者分组,每个Consumer必须属于一个group

Zookeeper:保存着集群 broker、 topic、 partition等meta 数据;另外,还负责broker故障发现, partition leader选举,负载均衡等功能

2、partition的数据文件(offffset,MessageSize,data)

partition中的每条Message包含了以下三个属性: offset,MessageSize,data,其中offset表示Message在这个partition中的偏移量,offset不是该Message在partition数据文件中的实际存储位置,而是逻辑上一个值,它唯一确定了partition中的一条Message,可以认为offset是partition中Message的 id; MessageSize表示消息内容data的大小;data为Message的具体内容。

3、数据文件分段 segment(顺序读写、分段命令、二分查找)

Kafka为每个分段后的数据文件建立了索引文件,文件名与数据文件的名字是一样的,只是文件扩展名为index。 index文件中并没有为数据文件中的每条Message建立索引,而是采用了稀疏存储的方式,每隔一定字节的数据建立一条索引。这样避免了索引文件占用过多的空间,从而可以将索引文件保留在内存中。

4、负载均衡(partition会均衡分布到不同broker上)

由于消息topic由多个partition组成,且partition会均衡分布到不同broker上。因此,为了有效利用broker集群的性能,提高消息的吞吐量,producer可以通过随机或者hash等方式,将消息平均发送到多个partition上,以实现负载均衡。

5、批量发送

是提高消息吞吐量重要的方式, Producer端可以在内存中合并多条消息后,以一次请求的方式发送了批量的消息给broker,从而大大减少broker存储消息的IO操作次数。但也一定程度上影响了消息的实时性,相当于以时延代价,换取更好的吞吐量。

完整资料扣666


网站公告

今日签到

点亮在社区的每一天
去签到