Skip to main content
Documents
Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage

Kafka 基础教程

1. Kafka 是什么?

Kafka 是一个分布式、高吞吐、可持久化的消息队列系统,用于:

  • 日志采集(Log Collect)
  • 事件驱动架构(EDA)
  • 流式处理(Streaming)
  • 日志持久化(Commit Log)
  • 系统解耦(微服务解耦)

简单理解:

Kafka 就是一个高性能的“消息中转站”,让系统之间解耦,并能持久化海量数据。

2. Kafka 的核心角色(5 大组件)

2.1 Producer(生产者)

负责发送消息到 Kafka 的 Topic。

可配置:

  • 消息是否自动重试
  • 消息是否压缩
  • 消息是否有序(按分区)
  • 是否要求返回 ACK(保证可靠性)

2.2 Broker(Kafka 服务器节点)

Kafka 集群中的每台服务器就是一个 Broker。

主要功能:

  • 存储消息(commit log)
  • 为生产者/消费者提供读写服务
  • 管理分区、副本

一般生产环境会有:

  • 3~9 个 Broker(保证高可用 + 扩展)

2.3 Topic(主题)

Kafka 中数据按主题分类。

类似目录或表:

  • 一个 Topic = 高频写 + 高频读的消息集合

例:

  • order_created
  • user_login_events

Topic 可以拆分成 多个 Partition(分区)以提升吞吐量。

2.4 Partition(分区) <- Kafka 高性能的关键

每个 Topic 包含若干 Partition,每个 Partition 是 一个有序、持久化的消息队列

示例

Topic:order

分区:

  • order-0
  • order-1
  • order-2

特点:

  • 分区内消息有序
  • 分区间消息无序
  • Kafka 吞吐量 ≈ 分区数 * 单分区吞吐

Kafka 的性能扩展方式:

  • 想提升性能 -> 加 Partition
  • 想提升高可用 -> 加副本(Replica)

2.5 Consumer & Consumer Group(消费者 / 消费者组)

Consumer:读取消息的客户端

Consumer Group(消费者组)

多个消费者可以组成一个 Group 来共同消费 Topic。

一个分区只会被同一 Group 中的一个 Consumer 消费。

即:

  • Group 内消费者 = 并发消费能力
  • 多个 Group = 广播模式

例:

  • Topic 分 3 个分区
  • Group A 有 3 个消费者
  • -> 刚好每人消费一个分区(并发最大)

3. Kafka 消息存储机制(Commit Log)

Kafka 将每个分区的数据保存为一个目录:

/kafka-logs/order-0

底层使用两种文件:

  • .log:消息内容
  • .index:索引,加速查找

写入是:

  • 顺序写磁盘(非常快)
  • 利用页缓存(PageCache)
  • 零拷贝(Zero-copy)提升读速度

因此 Kafka 能轻松达到百万 QPS。

4. Offset(消息偏移量)

每个 partition 内,每条消息都有一个递增 ID:

0, 1, 2, 3, 4, ...

消费者记录自己消费到的位置(offset):

  • Offset 是消费者的进度,不是 Kafka 的。

好处:

  • 每个 Group 都有自己的消费进度(互不影响)
  • 可回溯消费(重置 Offset)

5. 副本机制(Replica)

每个 Partition 可以设置多副本,如:

replication.factor = 3

分为:

  • Leader(主副本)
  • Follower(同步副本)

所有读写都在 Leader 进行。

Follower 同步 Leader 的数据。

6. ISR(In-Sync Replicas)

ISR = 同步速度正常的副本集合。

只有在 ISR 中的 follower 才算“健康”。

当 ISR 掉到只剩 1(Leader 自身)时,会出现风险场景:

  • -> 无法保证强一致(acks=all 也可能丢消息)

7. ACK 机制(消息可靠性)

Producer 可配置:

acks=0

不等待 Kafka 返回

  • -> 性能高但可能丢消息

acks=1

等待 Leader 写成功

  • -> Leader 宕机会丢消息

acks=all(生产环境推荐)

Leader + ISR 中全部 follower 写成功

  • -> 最安全
  • -> 慢一些但可靠

8. Rebalance(再均衡)

当 Consumer Group 中发生:

  • 有人加入
  • 有人退出
  • 分区数量变化

Kafka 会重新分配分区给消费者,称为:Rebalance(再均衡)

缺点:

  • Rebalance 期间,消费暂停
  • 大量 Group 时容易抖动

需要调优 session.timeout、max.poll.interval 等。

9. KRaft(新架构,替代 ZooKeeper)

Kafka 3.3 之后引入 KRaft:

  • 不再依赖 ZooKeeper
  • 自带元数据管理
  • 启动速度更快
  • 架构更简单

未来生产集群基本都推荐:

Kafka + KRaft(无 ZooKeeper 模式)

🔥 Kafka 基础概念总结(最关键 10 个点)

  1. Kafka = 分布式、高吞吐、可持久化的消息系统
  2. Topic = 数据分类
  3. Partition = 提升吞吐,内部消息有序
  4. Producer 发送消息到分区
  5. Consumer Group 提供并发消费能力
  6. Offset = 消费进度
  7. Replication(副本)保证高可用
  8. ACK 决定可靠性
  9. Commit Log + 顺序写提升性能
  10. KRaft 即将成为 Kafka 主流架构