下载地址/官网:Apache Kafka Downloads
Kafka 更适合后续承接高吞吐事件流、行为日志、审计事件和数据管道。它强在吞吐、分区并行和日志保留,如果只是少量业务任务分发,RabbitMQ 或 RocketMQ 可能更合适。
端口和用途
| 端口 | 用途 |
|---|---|
| 9092 | Broker 对客户端提供服务 |
| 2181 | 旧 ZooKeeper 模式端口 |
新部署建议直接使用 KRaft 模式,不再依赖 ZooKeeper。
Windows 安装部署 Kafka
- 准备 JDK 17 或 JDK 21:
java -version
-
打开 Apache Kafka Downloads,下载 Scala 2.13 对应的二进制压缩包。
-
解压到固定目录,例如:
D:\apps\kafka
- 生成集群 ID:
Set-Location D:\apps\kafka
.\bin\windows\kafka-storage.bat random-uuid
记下输出的 UUID。
- 初始化 KRaft 存储:
.\bin\windows\kafka-storage.bat format `
--standalone `
-t 替换为上一步的UUID `
-c .\config\server.properties
- 启动 Kafka:
.\bin\windows\kafka-server-start.bat .\config\server.properties
- 创建测试 Topic:
.\bin\windows\kafka-topics.bat `
--bootstrap-server 127.0.0.1:9092 `
--create `
--topic springvortex-test `
--partitions 1 `
--replication-factor 1
- 查看详情:
.\bin\windows\kafka-topics.bat `
--bootstrap-server 127.0.0.1:9092 `
--describe `
--topic springvortex-test
Windows 只建议本机学习使用。Kafka 的文件句柄、路径和后台运行方式更适合放在 Linux 服务器。
Ubuntu 安装部署 Kafka
- 准备 JDK 17 或 JDK 21,创建目录:
sudo mkdir -p /opt/kafka
sudo chown -R "$USER":"$USER" /opt/kafka
- 下载并解压。版本号以官方下载页为准:
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/
- 生成并格式化存储:
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
- 前台启动,先确认能运行:
bin/kafka-server-start.sh config/server.properties
- 另开终端测试 Topic:
/opt/kafka/bin/kafka-topics.sh \
--bootstrap-server 127.0.0.1:9092 \
--create \
--topic springvortex-test \
--partitions 1 \
--replication-factor 1
- 验证后可以用
nohup启动:
cd /opt/kafka
nohup bin/kafka-server-start.sh config/server.properties > kafka.log 2>&1 &
macOS 安装部署 Kafka
-
安装 JDK 后下载二进制包,解压到
~/apps/kafka。 -
初始化存储:
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
- 启动:
bin/kafka-server-start.sh config/server.properties
- 创建 Topic:
bin/kafka-topics.sh \
--bootstrap-server 127.0.0.1:9092 \
--create \
--topic springvortex-test \
--partitions 1 \
--replication-factor 1
生产部署建议
- Topic 命名一开始就规划前缀和环境,例如
prod.order.event.created。 - 分区数决定并行上限,不要上线后再随意缩小。
- 生产至少三节点,
replication-factor最小为 3。 min.insync.replicas、acks和重试策略要一起设计。- 消费组要监控 lag,堆积比单条消息错误更能说明问题。
- 磁盘要有保留周期和容量告警,Kafka 磁盘满会造成严重事故。
常见问题
Connection to node could not be established 要检查 Broker 监听地址。容器、云服务器和混合网络里经常是
advertised.listeners 配错。
格式化存储报已存在,说明数据目录已经初始化过。学习环境可以清空目录后重来,生产环境不能随手删。
消费 lag 持续增加先看消费者是否在线、线程是否阻塞、再评估分区数和下游处理能力。