0
点赞
收藏
分享

微信扫一扫

Kafka面试问题

张宏涛心理 2022-03-11 阅读 137

文章目录

Kafka在Zookeeper中都存什么信息

主要有

  • /kafka/brokers/ids 记录有哪些服务器正常工作
  • /kafka/brokers/topics/{topicName}/partitions/0/{“leader”:1,“isr”:[0,1,2]} 记录leader是谁,和isr信息
  • /kafka/controller/{“brokerid”:0} 记录controller节点,辅助leader选举

kafka工作流程

  1. Bbroker启动后会想zk注册
  2. Controller节点谁先注册就是谁
  3. Controller监听ids中broker节点变化
  4. Controller决定Leader选举 选举规则:在ISR中存活为前提,按AR(所有副本)中的优先顺序

Kafka的高效读写数据(为什么这么快)

  1. kafka本身是分布式集群,可以采用分区技术,并行度高
  2. 读数据采用的是稀疏索引,可以快速定位要消费的数据
  3. 顺序写磁盘,Kafka的producer生产数据,要写入到log文件中,写的过程是一直追加到文件末端,为顺序写。官网有数据表名,同样的磁盘,如果顺序写能到600M/s,而随机写的速度只有100K/m。这与磁盘的机械机构有关,顺序写省去了大量的磁头寻址的时间
  4. 采用页缓存+零拷贝技术
    零拷贝: kafka的数据逻辑处理交给了生产者和消费者处理,broker不关心存储的数据,所以就不用走应用层,传输效率高
    页缓存:Kafka重度依赖底层操作系统的提供的pageCache功能。当上层有写操作时,操作系统只是将数据写入PageCache中。当读数据发生时,先在pageCache中查找,如果找不到,再去磁盘中读取。实际上PageCache是尽可能多的把空闲的内存都当作磁盘缓存来使用了。

Kafka的数据积压(提升吞吐量)

  1. 提升Kafka的消费能力,增加分区,同时提升并行度
  2. 加大一次消费数据的条数
举报

相关推荐

0 条评论