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 持续增加先看消费者是否在线、线程是否阻塞、再评估分区数和下游处理能力。

评论

评论由 GitHub Discussions 承载,需要 GitHub 账号登录。