Kafka如何支撑亿级消息吞吐(5大核心技术)

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

1. Partition并行

Kafka如何支撑亿级消息吞吐(5大核心技术)-mikechen

假设一台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如何支撑亿级消息吞吐(5大核心技术)-mikechen

Kafka主要采用追加写:

Old Message
    ↓
Old Message
    ↓
New Message
    ↓
New Message

相比大量随机写,顺序写更加适合磁盘吞吐。

 

3. Page Cache

Kafka大量依赖操作系统Page Cache。

Producer写入数据后,数据首先进入操作系统缓存,Consumer读取时也可以充分利用缓存。

Kafka如何支撑亿级消息吞吐(5大核心技术)-mikechen

因此Kafka并不是简单理解成:

“磁盘慢,所以Kafka性能低。”

恰恰相反,Kafka通过日志追加、Page Cache等机制,将磁盘顺序I/O的能力充分发挥出来。

4. Zero Copy

Kafka发送数据时,可以利用操作系统的Zero Copy机制减少数据在用户态和内核态之间的重复拷贝。

Kafka如何支撑亿级消息吞吐(5大核心技术)-mikechen

传统数据路径可能是:

Disk
 ↓
Kernel
 ↓
User Space
 ↓
Kernel
 ↓
Network

而Zero Copy可以减少中间的数据复制:

Disk
 ↓
Kernel
 ↓
Network

这能够降低CPU开销。

5. 批量处理

Kafka不会要求Producer每发送一条消息就进行一次完整网络交互。

而是可以进行批量发送:

Message1
Message2
Message3
Message4
     ↓
 Batch
     ↓
Kafka

一次处理一批消息,可以显著降低网络和系统调用开销。

陈睿|mikechen

10年+大厂架构经验,资深技术专家,就职于阿里等一线大厂。

评论交流
    说说你的看法