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 没有可分配的分区。
