返回文章

Kafka 本地安装与实践

Windows 配置与 Go 消费者示例

Kafka 安装

Apache Kafka 3.5.0 归档 下载 kafka_2.12-3.5.0.tgz

解压到 D:\software\kafka_2.12-3.5.0。也可以使用其他路径,但路径里不要有空格,并尽量短一些,否则启动 Kafka 时可能报错:输入命令太长。

修改 config\server.properties

num.partitions=2
log.dirs=D:\\software\\kafka_2.12-3.5.0\\kafka-logs

这里故意把每个 Topic 对应的 partition 数量改为 2。后面的 Go 代码会分别演示 1 个、2 个和 3 个 Consumer 的情况。

log.dirs 是 Kafka 存储数据的目录。每个 Topic 的 partition 对应一个子目录,目录名为 {Topic}-{PartitionID}

修改 config\zookeeper.properties

dataDir=D:\\software\\kafka_2.12-3.5.0\\zookeeper_data

打开一个终端并启动 ZooKeeper。ZooKeeper 依赖 Java 环境,需要提前安装 JDK,可参考廖雪峰的安装说明

D:\software\kafka_2.12-3.5.0>.\bin\windows\zookeeper-server-start.bat .\config\zookeeper.properties

另开一个终端启动 Kafka。Windows 版本的启动脚本依赖 WMIC,缺少该功能时可参考这篇安装说明

PS D:\software\kafka_2.12-3.5.0>.\bin\windows\kafka-server-start.bat .\config\server.properties

Kafka 实践

完整代码见 kafka_go_demo。本实验使用 kafka-go

go get github.com/segmentio/kafka-go

编写 producer 和 consumer 后,通过 go run 在本地多个终端里启动三个 consumer 和一个 producer。

实验发现,其中一个 consumer 一直收不到消息,另外两个可以正常接收。这是因为 num.partitions=2 只配置了两个分区,同一 consumer group 中第三个 consumer 没有可分配的分区。

三个 Kafka Consumer 的本地实验结果