三个交互演示:① 为什么 Kafka 快(顺序写 / 零拷贝 / PageCache 可视化) · ② 5 大消息中间件横向对比 · ③ Kafka 生态全景拓扑
同样是磁盘 IO,Kafka 选择「只追加(append-only)」让机械盘 / SSD 都能跑出极致吞吐。点下面按钮看仿真柱状图:
💡 注意「磁盘顺序写」与「内存随机写」吞吐量级接近 —— 这就是 Kafka 敢把消息全写磁盘的底气。
Consumer 拉取消息时,Broker 把数据从磁盘 → 网卡。开 / 关「零拷贝」对比:
sendfile(2) 系统调用,磁盘数据直接通过 PageCache → 网卡,省掉用户态 JVM 堆拷贝。
→ 内存带宽节省 50%+,CPU 几乎不参与,单 Broker 可服务上万 Consumer 拉取。
Kafka 故意不在 JVM 堆里缓存消息,全部交给 OS 的 PageCache。点按钮模拟「缓存命中率随读写比变化」:
点上方按钮观察命中率变化
点下方任一卡片,看它的存储模型 / 消费模型 / 顺序保证 / 典型场景细节:
| 维度 | Kafka | RabbitMQ | RocketMQ | Pulsar | Redis Stream |
|---|---|---|---|---|---|
| 存储 | 磁盘顺序日志 | 内存 + 持久化 | 磁盘 CommitLog | BookKeeper | 内存 |
| 消费 | Pull + Offset | Push + ACK | Pull / 长轮询 | Push / Pull | Pull |
| 顺序 | 单分区有序 | 单队列有序 | 单队列有序 | 单分区有序 | Stream 有序 |
| 路由 | Key Hash | Exchange/Routing | Topic/Tag | Subscription | Stream Key |
| 吞吐 | 百万 QPS | 1~10 万 | 10~50 万 | 50~100 万 | 10~50 万 |
| 延迟 p99 | 5~50ms | <5ms | <10ms | <10ms | <1ms |
| 可重放 | ✓ 按 Offset | ✗ | ✓ | ✓ | ✓ |
| 事务/EOS | 幂等 + 事务 | 简单 | 事务消息 | 事务 | ✗ |
| 延迟消息 | 需外部 | ✓ TTL+DLX | ✓ 原生 | ✓ | ✗ |
| 典型场景 | 日志总线/CDC/流处理 | 异步任务 | 电商交易 | 云原生/跨地域 | 轻量队列 |
Kafka 不只是 Broker —— 它是一整套「生产 / 存储 / 流处理 / 集成 / 治理 / 监控」的生态。点击任一节点查看说明: