Kafka是大型架构核心,下面我详解Kafka亿级消息吞吐@mikechen
1. Partition并行

假设一台Broker只能承担:
100MB/s
那么3个Partition分布到不同Broker后,就可以形成更大的并行处理能力:
Partition-1 → Broker1 → 100MB/s
Partition-2 → Broker2 → 100MB/s
Partition-3 → Broker3 → 100MB/s
整体 ≈ 300MB/s
这就是Kafka的水平扩展能力。
2. 顺序写

Kafka主要采用追加写:
Old Message
↓
Old Message
↓
New Message
↓
New Message
相比大量随机写,顺序写更加适合磁盘吞吐。
3. Page Cache
Kafka大量依赖操作系统Page Cache。
Producer写入数据后,数据首先进入操作系统缓存,Consumer读取时也可以充分利用缓存。

因此Kafka并不是简单理解成:
“磁盘慢,所以Kafka性能低。”
恰恰相反,Kafka通过日志追加、Page Cache等机制,将磁盘顺序I/O的能力充分发挥出来。
4. Zero Copy
Kafka发送数据时,可以利用操作系统的Zero Copy机制减少数据在用户态和内核态之间的重复拷贝。

传统数据路径可能是:
Disk
↓
Kernel
↓
User Space
↓
Kernel
↓
Network
而Zero Copy可以减少中间的数据复制:
Disk
↓
Kernel
↓
Network
这能够降低CPU开销。
5. 批量处理
Kafka不会要求Producer每发送一条消息就进行一次完整网络交互。
而是可以进行批量发送:
Message1
Message2
Message3
Message4
↓
Batch
↓
Kafka
一次处理一批消息,可以显著降低网络和系统调用开销。
陈睿|mikechen
10年+大厂架构经验,资深技术专家,就职于阿里等一线大厂。