欢迎光临散文网 会员登陆 & 注册

Kafka都有哪些重要知识点,如有遗漏欢迎补充

2023-09-20 21:44 作者:码上加薪  | 我要投稿

    最近梳理了一遍Kafka的重要知识点,供有面试需求的小伙伴们使用。注意:由于本人只是一个初级Java开发,因此这篇小短文仅供初级Java工程师以及应届生使用大佬请直接划走。如果某些大佬不介意的话,欢迎补充一些知识点或指正一些错误,感谢感谢。

一 概述

  1. 为什么会诞生消息系统,Kafka、Pulsar、RocketMQ、ActiveMQ和RabbitMQ的优劣和技术选型。

  2. 在当前的大数据架构中(离线数仓、实时数仓以及湖仓一体化架构),Kafka扮演什么样的角色。

  3. 图文演示Kafka都有哪些核心组件,Kafka的总体工作流程是什么样的。

  4. 该如何正确理解 Kafka 的端到端的延时,哪些延迟是避免不了的。

二 Broker端

  1. Kafka如何利用磁盘的顺序写机制,实现单机每秒几十万消息写入。

  2. Kafka是如何利用零拷贝机制消费数据的,零拷贝的原理是什么?

  3. 从操作系统底层深入讲解IO中断,Kafka消费数据时为什么要在内核端处理。

  4. Kafka如何借用PageCache技术实现高吞吐,什么是吞吐量和处理延迟,Kafka如何做到高吞吐和低延迟。

  5. Kafka的PageCache污染是怎么回事,PageCache该设置多大才合适。

  6. Kafka如何利用零拷贝和页缓存技术,实现高性能的消费数据。

  7. Kafka底层的日志(log)文件的存储机制是什么,如何存储offset,Log文件的分段存储机制是什么。

  8. 为什么说Kafka自身的日志格式能够节省磁盘空间的开销。

  9. Kafka为什么能够做到TB量级的数据,在分布式系统中均匀分配。

  10. 如何基于多副本冗余机制,保证Kafka具有高可用性。

  11. 为保证Kafka数据不丢失,引入的ISR机制到达是什么意思。

  12. 基于Zookeeper构建的Kafka无状态自由伸缩技术的实现原理是什么。

  13. 基于KRaft构建的Kafka无状态自由伸缩技术的实现原理是什么。

  14. 为什么越来越多的分布式系统,包括Kafka都在去Zookeeper。

  15. 如何让Kafka集群,在处理数据请求的时候实现负载均衡的效果。

  16. Kafka集群如何基于Zookeeper实现节点发现与故障感知的。

  17. Kafka集群如何基于KRaft实现节点发现与故障感知的。

  18. Kafka的ISR机制,如何保证Leader分区副本宕机时只能选择同步的Follower分区副本。

  19. 你真的了解Partition的几个核心offset的含义吗?HW、LEO是什么,如何基于LEO计算HW。

  20. 深入探究Leader和Follower的LEO的更新机制、HW的更新机制。

  21. 即使有HW机制,在切换Leader分区副本时,为什么会丢失数据。

  22. Kafka 0.11版本引入leader epoch机制,如何解决高水位机制存在的弊端。

  23. indexFile和Timestamp文件的存储机制是什么?如何利用二分查找法快速定位数据。

  24. 硬盘上的日志文件是基于什么样的策略,做定期删除腾挪空间的。

  25. Kafka是如何自定义TCP之上的通信协议以及使用长连接通信的。

  26. Broker是如何基于Reactor模式,进行IO多路转接请求处理数据的。

  27. Kafka的Controller是什么?如何基于Zookeeper选举Controller,Container的故障转移是如何实现的。

  28. 如何基于KRaft一致性算法,实现Kafka的Controller选举以及故障转移。

  29. 在创建Topic时,Kafka Controller是如何实现Leader分区副本选举的。

  30. 在删除Topic的时候,如何基于Controller做数据的清理工作。

  31. Kafka Controller是如何基于Zookeeper感知Broker上线或者下线的。

  32. Kafka Controller是如何基于KRaft感知Broker上线或者下线的。

  33. Kafka自身的生态系统都有哪些内容,KSQL或者Kafka Streaming能否替代Flink的实时计算框架地位?

  34. 如果线上Kafka的某个topic数据量很大,该如何增加分区数量,要考虑哪些因素。

  35. 对核心业务数据Topic需要动态增加副本因子,该如何操作,需要注意哪些问题。

  36. Kafka集群的Topic分区分布分配机制是什么样的

  37. 为保证线上数据安全,该如何监控Leader、Follower 和 In-Sync Replica(ISR),如何配置ISR列表。

  38. Kafka的ISR是如何伸缩,如何广播ISR列表。

  39. 前任Leader副本恢复,Follower副本被踢出ISR列表会发生什么。

  40. Kafka用到的PageCache的预读和顺序读机制是怎么回事?

  41. 如果某台broker机器承载了过多leader分区副本,该如何处理。

  42. Kafka的内部通信原理是什么样的。

  43. Kafka如何通过缓冲池优化JVM GC。

  44. Kafka的批量发送消息和日志存储模式

三 生产者

  1. Kafka Producer怎么把消息发送给Broker集群的,负责IO请求的Sender线程是如何基于缓冲区发送数据的。

  2. Kafka的生产者发送消息也会阻塞吗,当消息缓冲区满的时候会抛出异常吗。

  3. Kafka可以同时接受有几个发送到Broker的请求没收到响应。

  4. Producer的缓冲区内部数据结构是什么样的。

  5. Kafka在发送消息时,acks参数到底是干嘛的,acks等于0、1、-1有哪些优势和不足。

  6. Kafka在发送消息时,该如何设置最小同步副本的数量。

  7. Kafka生产者的Sticky分区方式有哪些优势。

  8. Kafka生产消息为什么快之PageCache。

  9. Kafka生产消息为什么快之顺序写

  10. RecordAccumulator的tryAppend()的工作原理是什么。

  11. 发送消息给Broker时遇到的各种异常该如何处理。

  12. 发送消息的缓冲区,batch.size,linger.ms应该如何优化来提升发送的吞吐量。

  13. 如何根据业务场景对消息大小以及请求超时,设置成一个合理的参数值。

  14. Kafka在发送消息时,针对瞬间异常的消息重试参数,需要考虑哪些因素。

  15. Kafka生产者自定义分区、序列化和拦截器的必要性以及注意事项。

四 消费者

  1. Kafka的Consumer是如何持续消费的,如何从Kafka集群获取消息的。

  2. Kafka的消费者重启后继续消费原理。

  3. Kafka的消费者offset的记录方式以及基于内部topic的提交模式。

  4. Kafka通过哪三个参数感知消费者发生故障。

  5. Kafka在消费数据时,有哪几个参数需要注意以及该如何设置。

  6. 如果对消费者offset相关的参数,设置不好对线上系统产生哪些影响。

  7. 消费者更新__consumer_offsets时,需要更新哪些内存结构,以及

  8. Kafka如何做到精准一次性消费数据。

  9. 如何保证Kafka消费数据的可靠性。

  10. Kafka自动提交offset造成数据重复和丢失的场景有哪些?为什么要改成手动提交offset。

  11. Kafka的Consumer Group消费数据的优势。

  12. 如何实现Consumer Group的状态机流转,状态机是什么意思。

  13. Kafka的Group Coordinator是怎么工作的,主要负责什么,消费者选择Coordinator的算法是如何实现的。

  14. Coordinator和Consume Leader如何协作制定分区方案。

  15. Kafka消费者组的RangeAssignor分区分配策略是什么?

  16. Kafka消费者组的RoundRobin分区分配策略是什么?解决了什么问题有哪些弊端。

  17. Kafka消费者组的StickyAssignor分区分配策略是什么?解决了什么问题有哪些弊端。

  18. Kafka在发生Rebalance时,CooperativeStickyAssignor有哪些改良。

  19. Kafka最新设计的rebalance分代机制有哪些作用。

  20. 配置Kafka静态的Group 成员,避免不必要的Rebalance。

  21. 在哪些场景下会触发Consumer Group的Rebalance

  22. 消费者组的4个消费者,消费topic的3个分区,再增加一个消费者,会发生Rebalance吗

  23. 发生Consumer的Rebalance有什么后果。

  24. Kafka消费者组的工作原理、Rebalance和Failover

  25. Kafka的数据多副本、高可用性,acks、最小副本数。

  26. 当Kafka集群线上有大量消息积压时,该如何处理。

  27. 当线上Kafka集群有大量消息积压时,如何加快消费速度。

  28. 使用消息队列时,如何确保消息的有序性。

  29. 该如何做到并行并且顺序消费Kafka的数据。

  30. 如何做到高并发、高吞吐的消费Kafka中数据

  31. Kafka在哪些场景会出现重复消费,该如何处理。

  32. Kafka如何支持点对点模式和发布订阅模式。

  33. Kafka消费数据为什么快之 - mmap技术。

  34. Kafka消费数据为什么会快之sendfile技术。

  35. Kafka的生产和消费数据为什么快。

  36. Kafka生产消息为什么快之顺序读。

  37. 在使用Kafka做消息队列的时候,为什么会丢失数据。

  38. 如何测试Kafka集群的生产和消费的吞吐量。

  39. 什么是Kafka的幂等性,Kafka的事务数据一致性是什么,如何配合分布式事务实现消息的事务支持。

  40. 消费服务故障场景下的重试队列该如何实现,如何保证消费数据不重复,不丢失。

  41. 消费者的故障感知机制是什么,有哪些核心参数、心跳参数、会话超时以及监控消费过慢机制是什么。

五 KRaft

  1. Raft算法的Leader选举、Failover过程,投票分裂、日志复制、修复不一致的日志以及如何保证数据安全性。

  2. Kafka集群的控制节点由Zookeeper管理到KRaft管理。

  3. KRaft 集群的元数据更新机制是什么。

  4. KRaft 的元数据复制过程是什么样的。

  5. KRaft 的Leader副本选举以及 Failover 过程。

  6. KRaft 集群的元数据快照(Snapshot)机制是什么。

  7. KRaft 的快照如何确保Kafka元数据不丢失。

六 延迟队列

  1. 如何基于Kafka实现延时队列。

  2. 如何基于Kafka的多层时间轮实现延迟队列。

  3. 盘点一下在Broker内部有哪些不同场景下会有延时任务。

  4. Kafka如何基于时间轮,实现分区副本的数据同步。

  5. Kafka的时间轮复用和多层时间轮,相比Netty的时间轮有哪些优势。

  6. 基于多层时间轮实现Kafka延迟功能,如何解决时间轮的空转问题。

七 规划设计线上Kafka集群

  1. 如何设计规划亿级线上Kafka集群的Broker端参数、生产者参数和消费者参数。

  2. 每日几十亿的消息数量,会对Kafka集群造成多大的压力。

  3. 如何规划Kafka集群的机器数量、硬盘大小、CPU、内存以及网卡配置。

  4. 到底该不该使用SSD硬盘,普通的SAS硬盘能应付吗?

  5. 如何设置操作系统的内核参数、JVM以及GC参数、线上机器的经典配置。

  6. 测试验证Kafka集群的生产者和吞吐量。

  7. 如何优化线上Kafka系统,要做哪些重点内容的监控。

  8. 如何优化和监控线上Kafka系统的Broker端压力。

  9. Kafka集群如何做异地灾备,需要做灾备吗,如果做灾备有哪些工具可以使用。

  10. Kafka全链路数据丢失风险分析,如何跟踪线上Kafka集群莫名其妙的丢数据问题。

八 其他相关问题

  1. Kafka的消息过期时间(TTL)该如何实现。

  2. Kafka有没有优先队列,该如何实现优先级队列。

  3. 针对链路的故障场景,该如何实现类似于Pulsar的死信队列。

  4. 下游系统在计算错误时,该如何进行 消息回溯,消息回溯要主要哪些事项。

  5. 该如何监控消息轨迹,有没有必要对Kafka数据做质量监控,主要监控哪些内容,有什么手段。

  6. ZAB(Zookeeper Atomic Broadcast)的工作原理是什么?

  7. Zookeeper集群Leader选举过程是什么。

  8. Zookeeper的Leader节点故障后,如何选出新的Leader。

  9. Zookeeper帮助Kafka管理了哪些内容,为什么说Kafka的Broker节点是无状态的。


Kafka都有哪些重要知识点,如有遗漏欢迎补充的评论 (共 条)

分享到微博请遵守国家法律