Kafka04-知识速记
按“概念→通信→分区→可靠性→副本→性能”逻辑顺序排列,答案均≤2 行。原博客地址:https://mp.weixin.qq.com/s/lfqZinenUoWPp62HGfv6tw
文章目录
- Kafka04-知识速记
- 1. 基础概念
- 2. 通信流程(启动→生产→消费)
- 3. 分区策略
- 4. 消费者组与 Rebalance
- 5. 可靠性三板斧
- 6. 副本同步(HW/LEO 机制)
- 7. 为什么去 ZooKeeper(≥v2.8 KRaft 模式)
- 8. Kafka “快”的三板斧

1. 基础概念
名词 | 一句话解释 |
---|
Record | 一条消息。 |
Topic | 消息的分类目录。 |
Partition | Topic 的水平分片,提升并发与伸缩。 |
Offset | 分区级别自增序号,标识消息位置。 |
Broker | Kafka 进程/服务器实例。 |
Leader/Follower | 每分区一个对外服务的 Leader,其余 Follower 仅冗余。 |
ISR | 与 Leader 差距 ≤ replica.lag.time.max.ms 的副本集合。 |
Producer | 发消息端。 |
Consumer | 读消息端。 |
Consumer Group | 组内共享订阅,组间广播;天然支持点对点 vs 发布订阅。 |
Coordinator | 为消费者组做分区分配与 Rebalance。 |
Controller | 集群“班长”,负责 Leader 选举与元数据变更。 |
2. 通信流程(启动→生产→消费)
- Broker 启动 → 向 ZK 注册临时节点。
- 客户端(生产/消费)通过
bootstrap.servers
任连一台 → 取完整元数据 → 再与对应 Broker 建连。 - 生产者按分区策略把批次消息发给 Leader;消费者连 Leader 拉取。
3. 分区策略
策略 | 行为 |
---|
指定 key | hash(key) % 分区数 → 相同 key 落同分区(分区有序)。 |
无 key | 轮询或随机。 |
自定义 | 实现 Partitioner 接口。 |
> 目的:数据分散 → 并行写/读 → 横向扩展。
4. 消费者组与 Rebalance
- 理想数:消费者数 = 总分区数。
- 触发:成员增减、分区数变、订阅正则匹配到新 Topic。
- 过程:JoinGroup → 选群主 → 群主用策略算分配 → SyncGroup 下发。
- 影响:Rebalance 期间全组停止消费(类似 STW)。
三种分配策略
名称 | 特点 |
---|
Range(默认) | 按主题序分配,多主题时易倾斜。 |
RoundRobin | 全局轮询,均衡但无状态。 |
Sticky | 在均衡前提下尽量保留上次分配,减少连接抖动。 |
5. 可靠性三板斧
环节 | 配置要点 |
---|
生产者 | acks=all + 大 retries + 异步回调。 |
Broker | replication.factor≥3 & min.insync.replicas≥2 & unclean.leader.election.enable=false 。 |
消费者 | enable.auto.commit=false 手动提交;auto.offset.reset=earliest 防丢。 |
6. 副本同步(HW/LEO 机制)
- HW:已提交边界,消费者可见。
- LEO:下条待写位移。
- 同步节奏:Follower 拉取 → 更新自身 LEO → Leader 取最小 LEO 更新 HW → 下次响应带回 HW → Follower 更新 HW。
7. 为什么去 ZooKeeper(≥v2.8 KRaft 模式)
- 少运维一套 ZK 集群,降复杂度。
- ZK 不适合高频写(如位移),易成瓶颈。
- 自管元数据可水平扩展,支持百万分区级。
8. Kafka “快”的三板斧
- 顺序追加写磁盘 → 磁盘顺序 IO ≈ 网络 IO。
- PageCache + 零拷贝(mmap 写,sendfile 读)→ 省一次内存拷贝。
- 批量压缩(生产端攒批、压缩,Broker 原样存,消费端解压)→ 降网络与磁盘量。