kafka原理整理
这里给你极简、结构化、可直接背诵的 Kafka 核心原理整理,去掉冗余,只留关键要点:
Kafka 核心原理(精简版)
一、整体定位
分布式发布-订阅消息队列 + 流平台,核心目标:高吞吐、高可用、持久化、可水平扩展。
二、核心角色与概念
- Broker:Kafka 服务节点,集群由多 Broker 组成
- Topic:消息逻辑分类(队列名)
- Partition(分区):Topic 物理分片,单分区有序、全局无序,是并行与扩展基础
- Replica(副本):分区冗余备份,分 Leader / Follower
- ISR:与 Leader 保持同步的副本集合,只有 ISR 内可选举新 Leader
- Producer:消息生产者,发往 Leader 分区
- Consumer:消息消费者,以消费者组(Consumer Group) 工作
- Offset:分区内消息唯一序号,标记消费位置
- HW(高水位):所有 ISR 已同步的最大 Offset,消费者只能读 HW 前消息
- LEO:日志下一条待写入位置
三、架构模式
- 传统架构:Broker + ZooKeeper(管理元数据、选 Controller、协调消费组)
- KRaft 新架构(2.8+):去掉 ZK,用 Raft 协议 自管理元数据,更轻量稳定
四、存储原理(高性能关键)
- 每个分区 = 磁盘上一个文件夹
- 日志分段存储:
.log(消息)、.index(偏移索引)、.timeindex(时间索引) - 只追加写(append-only),顺序 IO,极快
- 写入先到 PageCache(页缓存),内核异步刷盘
- 读取用零拷贝(sendfile),减少用户态/内核态拷贝,提升吞吐量
- 过期策略:按时间/大小删除,或按 Key 压缩保留最新值
五、生产消息原理
- 生产者拉取元数据 → 确定目标分区(哈希/轮询/自定义)
- 消息批量、压缩后发送到 Leader
- ACK 可靠性级别:
acks=0:不确认,最快acks=1:Leader 落盘即确认acks=all/-1:所有 ISR 同步完成确认(最安全)
- Follower 主动拉取同步,保持在 ISR 中
六、消费消息原理
- 以消费者组为单位:一个分区只被组内一个消费者消费
- 消费者数 > 分区数 → 多余消费者空闲
- Rebalance(重平衡):成员变化、分区变化时重新分配分区
- Offset 存储:新版默认存在内部主题
__consumer_offsets - 消费语义:
- 最多一次(At-most-once)
- 至少一次(At-least-once)
- 精确一次(Exactly-once:幂等 + 事务)
七、高可用原理
- 多副本冗余,Leader 负责读写,Follower 只同步
- Leader 宕机:从 ISR 中选举新 Leader
- 不同步的副本会被踢出 ISR,追上后重新加入
- 旧 Leader 恢复后会截断到 HW,保证数据一致
八、高性能核心总结
- 分区并行:多分区分布式读写
- 顺序写:避免随机 IO 瓶颈
- 页缓存 + 异步刷盘
- 批量发送 + 消息压缩
- 零拷贝读取
- 消费者拉模式,适配不同消费速度
九、一句话总纲
Kafka 是分布式追加日志系统,通过分区实现扩展、副本实现高可用、顺序IO+零拷贝实现高吞吐、消费者组实现负载消费。
需要我再整理成面试高频问答版(一问一答)吗?
浙公网安备 33010602011771号