kafka面试题

1.为什么kafka可以实现高吞吐?单节点kafka的吞吐量也比其他的消息队列大,为什么?

(1)零拷贝
(2)顺序日志
(3)预读
(4)后写:放到磁盘缓存,到达一定值的时候,操作系统一次性写入很多数据
(5)分段日志:
(6)批处理:双端队列
(7)压缩:byte数组

2.kafka的偏移量offset存放在哪?

  1. 早些时放zookeeper,zk是做调度用的,如果经常更新偏移量会影响性能
  2. 0.9版本后放岛kafka cluster(zookeeper 会生成一个topic:_consumer_offset)
  3. 自定义:避免数据重复,可以禁止自动提交,可以放岛mysql中,或者redis中

3.kafka用什么方式消费数据,拉还是推?

(1)poll(速率问题),如果是推的方式,有可能消费端承载不了,如果网络阻塞,服务就可能中断了,用拉的方式可以均衡速率

4.如何保证数据不会出现丢失或者重复消费的情况?

(1)同步
(2)ACK -1或者All
(3)自己维护offset避免重复消费(低级API)

5.Kafka的元数据存在哪?

(1)ZK中(包含 /controller,/cluster,/consumer,/broker)

6.为什么使用kafka,可不可以用flume直接将数据放在hdfs上

(1)Flume只是传输框架,不能存储
(2)Flume丢失数据
(3)消费者出来比较麻烦

7.kafka如何保证不同的订阅源都收到相同的一份内容

(1)HW高水位
(2)LEO

8.kafka中的leader的选举机制

(1)先选broker,然后从ISR中选leader
https://blog.csdn.net/qq_37142346/article/details/91349100

9.kafka的运行机制

10.提高kafka的消费速度(吞吐量优化)

(1)增加分区与消费者
(2)增加拉取数据的大小
(3)增大批处理的大小

11.kafka的分区数据有有序性?分区数据存放的算法?分区的好处?

12.ISR中什么情况下brokerId会消失

(1)副本down掉
(2)网络阻塞
(3)数据落后太多Lag ,leader会从ISR中移除这个follower

标题 13.flume和kafka有序吗

(1)flume有序(Queue)
(2)kafka同一个分区有序,不保证不同分区有序

14.kafka的offset,flume的组成,项目中为什么用了两层?

15.kafka消费的高级API,低级API?

16.怎么手动维护offset?

(1)关闭自动提交
(2)调用方法Consumer.commitSync()
(3)保存offset到mysql或者redis中

上一篇:(8)flume自定义mysql source


下一篇:链表相关操作