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 的思维导图