Kafka 核心问题

本文仅包括了一些常见问题,后续会持续更新。

  • topic 分区目的
  • kafka 为什么这么快?
  • 幂等性
  • 事务
  • 副本同步机制
  • AKF
  • ZK 的作用
  • Offset 持久化
  • 消费逻辑(单线程?多线程?)
  • Producer 生产数据的流程
  • broker 网络层通信原理(IO 模型?mute-unmute?为什么无法保证多个 producer 生产消息的有序?与 Redis 对比?)
  • 消息持久化原理(日志怎么存储的?每个段包含哪些内容?什么时候分段?日志会被删除吗?日志怎么刷盘的?Index 怎么刷盘的?为什么默认将真正的刷盘交给 OS Kernel?)
  • Replica 同步数据的流程(leader 写完 local log 后,做什么?delayCallResponse 的作用?ISR 是啥?HW 的更新过程?如何让数据流转更快?)
  • Controller 选举过程
  • Controller 选举完成后,上下文的初始化
  • Controller 的作用
  • Partition Leader 的选举流程
  • Controller 脑裂怎么解决
  • create topic 的流程
  • Consumer(leader、coordinator 的概念?coordinator 的选举过程?offset 持久化的位置?加入一个 consumer group 的过程?消费数据的过程?)
  • 在同一个 group 下,一个 partition 只能由一个 consumer 消费吗?=> 并发的关键?
  • 事务(针对谁?):
    • 如何保证消息仅被生产一次
    • 为什么要引入 TxID?
    • 为什么要引入 Tx Marker?
    • 从事务角度理解为什么 Consumer 只能消费 HW 以下的消息?
    • 跨多 Topic、多 Partition 的事务支持?

下面是一些八股:

  • 你为什么用 Kafka
  • Kafka 如何保证数据不丢失
  • Kafka 数据丢失的场景
  • 消息积压怎么办
  • Kafka 为什么高效

2024.06.07

补充一张 Kafka 的思维导图

image