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:日志下一条待写入位置

三、架构模式

  1. 传统架构:Broker + ZooKeeper(管理元数据、选 Controller、协调消费组)
  2. KRaft 新架构(2.8+):去掉 ZK,用 Raft 协议 自管理元数据,更轻量稳定

四、存储原理(高性能关键)

  1. 每个分区 = 磁盘上一个文件夹
  2. 日志分段存储:.log(消息)、.index(偏移索引)、.timeindex(时间索引)
  3. 只追加写(append-only),顺序 IO,极快
  4. 写入先到 PageCache(页缓存),内核异步刷盘
  5. 读取用零拷贝(sendfile),减少用户态/内核态拷贝,提升吞吐量
  6. 过期策略:按时间/大小删除,或按 Key 压缩保留最新值

五、生产消息原理

  1. 生产者拉取元数据 → 确定目标分区(哈希/轮询/自定义)
  2. 消息批量、压缩后发送到 Leader
  3. ACK 可靠性级别:
    • acks=0:不确认,最快
    • acks=1:Leader 落盘即确认
    • acks=all/-1:所有 ISR 同步完成确认(最安全)
  4. Follower 主动拉取同步,保持在 ISR 中

六、消费消息原理

  1. 消费者组为单位:一个分区只被组内一个消费者消费
  2. 消费者数 > 分区数 → 多余消费者空闲
  3. Rebalance(重平衡):成员变化、分区变化时重新分配分区
  4. Offset 存储:新版默认存在内部主题 __consumer_offsets
  5. 消费语义:
    • 最多一次(At-most-once)
    • 至少一次(At-least-once)
    • 精确一次(Exactly-once:幂等 + 事务)

七、高可用原理

  1. 多副本冗余,Leader 负责读写,Follower 只同步
  2. Leader 宕机:从 ISR 中选举新 Leader
  3. 不同步的副本会被踢出 ISR,追上后重新加入
  4. 旧 Leader 恢复后会截断到 HW,保证数据一致

八、高性能核心总结

  • 分区并行:多分区分布式读写
  • 顺序写:避免随机 IO 瓶颈
  • 页缓存 + 异步刷盘
  • 批量发送 + 消息压缩
  • 零拷贝读取
  • 消费者拉模式,适配不同消费速度

九、一句话总纲

Kafka 是分布式追加日志系统,通过分区实现扩展、副本实现高可用、顺序IO+零拷贝实现高吞吐、消费者组实现负载消费

需要我再整理成面试高频问答版(一问一答)吗?

posted @ 2026-02-09 11:28  wuyingchun1987  阅读(0)  评论(0)    收藏  举报