SpringVortexNotes

Kafka 安装部署指南

zjc 于 2026-08-15 发布

下载地址/官网:Apache Kafka Downloads

Kafka 更适合后续承接高吞吐事件流、行为日志、审计事件和数据管道。它强在吞吐、分区并行和日志保留,如果只是少量业务任务分发,RabbitMQ 或 RocketMQ 可能更合适。

端口和用途

端口 用途
9092 Broker 对客户端提供服务
2181 旧 ZooKeeper 模式端口

新部署建议直接使用 KRaft 模式,不再依赖 ZooKeeper。

Windows 安装部署 Kafka

  1. 准备 JDK 17 或 JDK 21:
java -version
  1. 打开 Apache Kafka Downloads,下载 Scala 2.13 对应的二进制压缩包。

  2. 解压到固定目录,例如:

D:\apps\kafka
  1. 生成集群 ID:
Set-Location D:\apps\kafka
.\bin\windows\kafka-storage.bat random-uuid

记下输出的 UUID。

  1. 初始化 KRaft 存储:
.\bin\windows\kafka-storage.bat format `
  --standalone `
  -t 替换为上一步的UUID `
  -c .\config\server.properties
  1. 启动 Kafka:
.\bin\windows\kafka-server-start.bat .\config\server.properties
  1. 创建测试 Topic:
.\bin\windows\kafka-topics.bat `
  --bootstrap-server 127.0.0.1:9092 `
  --create `
  --topic springvortex-test `
  --partitions 1 `
  --replication-factor 1
  1. 查看详情:
.\bin\windows\kafka-topics.bat `
  --bootstrap-server 127.0.0.1:9092 `
  --describe `
  --topic springvortex-test

Windows 只建议本机学习使用。Kafka 的文件句柄、路径和后台运行方式更适合放在 Linux 服务器。

Ubuntu 安装部署 Kafka

  1. 准备 JDK 17 或 JDK 21,创建目录:
sudo mkdir -p /opt/kafka
sudo chown -R "$USER":"$USER" /opt/kafka
  1. 下载并解压。版本号以官方下载页为准:
cd /tmp
curl -fLO https://archive.apache.org/dist/kafka/4.0.0/kafka_2.13-4.0.0.tgz
tar -xzf kafka_2.13-4.0.0.tgz
mv kafka_2.13-4.0.0/* /opt/kafka/
  1. 生成并格式化存储:
cd /opt/kafka
KAFKA_CLUSTER_ID="$(bin/kafka-storage.sh random-uuid)"
bin/kafka-storage.sh format --standalone -t "$KAFKA_CLUSTER_ID" -c config/server.properties
  1. 前台启动,先确认能运行:
bin/kafka-server-start.sh config/server.properties
  1. 另开终端测试 Topic:
/opt/kafka/bin/kafka-topics.sh \
  --bootstrap-server 127.0.0.1:9092 \
  --create \
  --topic springvortex-test \
  --partitions 1 \
  --replication-factor 1
  1. 验证后可以用 nohup 启动:
cd /opt/kafka
nohup bin/kafka-server-start.sh config/server.properties > kafka.log 2>&1 &

macOS 安装部署 Kafka

  1. 安装 JDK 后下载二进制包,解压到 ~/apps/kafka

  2. 初始化存储:

cd ~/apps/kafka
KAFKA_CLUSTER_ID="$(bin/kafka-storage.sh random-uuid)"
bin/kafka-storage.sh format --standalone -t "$KAFKA_CLUSTER_ID" -c config/server.properties
  1. 启动:
bin/kafka-server-start.sh config/server.properties
  1. 创建 Topic:
bin/kafka-topics.sh \
  --bootstrap-server 127.0.0.1:9092 \
  --create \
  --topic springvortex-test \
  --partitions 1 \
  --replication-factor 1

生产部署建议

  1. Topic 命名一开始就规划前缀和环境,例如 prod.order.event.created
  2. 分区数决定并行上限,不要上线后再随意缩小。
  3. 生产至少三节点,replication-factor 最小为 3。
  4. min.insync.replicasacks 和重试策略要一起设计。
  5. 消费组要监控 lag,堆积比单条消息错误更能说明问题。
  6. 磁盘要有保留周期和容量告警,Kafka 磁盘满会造成严重事故。

常见问题

Connection to node could not be established 要检查 Broker 监听地址。容器、云服务器和混合网络里经常是 advertised.listeners 配错。

格式化存储报已存在,说明数据目录已经初始化过。学习环境可以清空目录后重来,生产环境不能随手删。

消费 lag 持续增加先看消费者是否在线、线程是否阻塞、再评估分区数和下游处理能力。