Skip to content

部署模式对比

Kafka 支持两种部署模式(单节点、集群),以及两种元数据管理方案(ZooKeeper、KRaft)。

概述

模式Broker 数高可用水平扩展适用场景
单节点1本地开发、测试
集群(ZK)≥ 3生产环境(历史遗留)
集群(KRaft)≥ 3生产环境(推荐,Kafka 3.7+)

单节点(Standalone)

┌───────────────────┐
│     Broker :9092   │   KRaft 模式:Broker + Controller 合一
│  (broker,controller)│
└───────────────────┘

优点

  • 部署最简单,一条 Docker 命令启动
  • 资源占用少,适合本地开发和 CI
  • 管理零成本

缺点

  • 无高可用,宕机即不可用
  • 无数据冗余,副本因子只能为 1
  • 吞吐受限于单机

适用:本地开发、单元测试、CI 流水线。

集群(KRaft 推荐)

    ┌──────────────┐  ┌──────────────┐  ┌──────────────┐
    │  Broker 1    │  │  Broker 2    │  │  Broker 3    │
    │  controller  │  │  controller  │  │  controller  │   KRaft Quorum
    │  :9092       │  │  :9093       │  │  :9094       │
    └──────────────┘  └──────────────┘  └──────────────┘
         ▲  ▲  ▲          ▲  ▲  ▲          ▲  ▲  ▲
         │  │  │          │  │  │          │  │  │
    Partition-0  Partition-1  Partition-2  (replication-factor=3)

优点

  • 高可用:Broker 故障自动切换 Leader,服务不中断
  • 数据冗余:多副本存储,不丢数据
  • 水平扩展:增加 Broker 线性提升吞吐
  • 无外部依赖:KRaft 模式自包含,运维简单

缺点

  • 至少 3 节点,资源成本较高
  • 需配置 Controller Quorum 和网络互通
  • KRaft 模式 Controller 节点负载较高(管理所有元数据)

适用:所有生产环境,中大规模应用。

KRaft vs ZooKeeper

对比维度ZooKeeper 模式KRaft 模式
外部依赖ZooKeeper 集群(≥ 3 节点)无,Kafka 内置 Raft
进程数Kafka + ZK 两套系统仅 Kafka 一套
元数据存储ZK 树形结构Kafka 内部 Topic __cluster_metadata
元数据传播ZK Watch(慢)Raft 日志复制(快)
Controller 故障恢复从 ZK 重建(耗时 10-60s)Raft Leader 选举(< 1s)
Partition 数上限~200K(ZK 节点数瓶颈)≥ 2M
Kafka 版本所有版本3.3+ 生产可用,4.0+ 仅支持 KRaft
迁移支持ZK→KRaft 在线迁移(3.5+)

选型决策

是否需要高可用?
├── 否 → 单节点(开发/测试)
└── 是
    └── Kafka 版本?
        ├── ≤ 3.2 → 集群(ZooKeeper)
        └── ≥ 3.3 → 集群(KRaft,推荐)
条件推荐模式
本地开发、测试单节点 KRaft
生产环境,Kafka ≥ 3.3KRaft 集群
生产环境,Kafka ≤ 3.2ZK 集群 + 计划迁移
大容量场景(> 200K Partition)KRaft 集群

参考