Kafka是大型架构核心,下面我详解Kafka百万并发架构@mikechen
Kafka百万并发架构
典型 Kafka 高并发架构:

Producer Cluster
│
▼
Load Balancer
│
┌──────────────┼──────────────┐
▼ ▼ ▼
Kafka Broker1 Kafka Broker2 Kafka Broker3
│ │ │
Partition Partition Partition
│ │ │
▼ ▼ ▼
Consumer Group(并行消费)
典型配置:
| 参数 | 配置 |
|---|---|
| Broker数量 | 5-10 |
| Partition数量 | 200+ |
| 副本数 | 3 |
| Producer批量 | 开启 |
这样的集群:轻松达到百万 。
很多互联网公司日志系统:
- 日志采集;
- 埋点系统;
- 实时计算;
都会使用 Kafka 作为 流量入口层。
顺序写磁盘(Sequential I/O)
传统系统写磁盘时,经常是 随机写(Random I/O)。

随机写的问题:
- 磁盘寻道时间高;
- IOPS 限制严重;
- 性能很容易成为瓶颈;
而 Kafka 的设计原则是:
所有消息都采用顺序写入日志文件(Commit Log)。
写入模式:
Producer
│
▼
Kafka Broker
│
▼
Append Log(顺序追加)
Kafka 的 Topic 在底层是:
Topic
├─ Partition 0
│ └─ Log Segment
├─ Partition 1
│ └─ Log Segment
└─ Partition 2
每个 Partition 本质就是一个 追加写日志文件。
顺序写的优势:
| 类型 | 吞吐能力 |
|---|---|
| 随机写 | 几百 IOPS |
| 顺序写 | 几万 IOPS |
因此 Kafka 可以把磁盘性能 榨到接近带宽极限。
零拷贝技术(Zero Copy)
在传统数据传输中,数据通常会经过 多次拷贝:

磁盘
↓
Kernel Buffer
↓
User Buffer
↓
Socket Buffer
↓
网卡
这个过程会产生 多次 CPU copy。
而 Kafka 使用 零拷贝技术。
核心调用:
sendfile()
数据路径变成:
磁盘
↓
Kernel Buffer
↓
Socket Buffer
↓
网卡
特点:
- 减少 CPU 拷贝
- 减少上下文切换
- 提升网络吞吐
因此 Kafka 在 消息消费阶段可以达到极高吞吐。
很多场景:单 Broker 网络吞吐可达到 GB/s级别。
分区并行机制
Kafka 的核心设计是 Partition 分区模型。

Topic
├─ Partition0
├─ Partition1
├─ Partition2
├─ Partition3
└─ PartitionN
每个 Partition:
- 可以在不同 Broker 上
- 可以被不同 Consumer 并行消费
Producer 写入流程:
Producer
│
▼
Partitioner
│
├─ Partition0
├─ Partition1
├─ Partition2
└─ PartitionN
这意味着:
Kafka 可以水平扩展吞吐能力。
例如:
| Partition数量 | 理论吞吐 |
|---|---|
| 10 | 10万 TPS |
| 100 | 100万 TPS |
| 1000 | 千万 TPS |
只要:
- Broker 足够;
- Partition 足够.
Kafka 的吞吐能力几乎 线性扩展。