ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

Kafka 快速入门:环境搭建、部署配置与第一个 Java 程序

Kafka 快速入门:环境搭建、部署配置与第一个 Java 程序 1. 引言Apache Kafka 是一个分布式、高吞吐、可扩展的消息队列系统,广泛应用于日志收集、流式处理、事件驱动架构等场景。对于初学者来说,快速搭建一个可运行的 Kafka 环境,并跑通第一个生产者与消费者程序,是建立信心、理解其核心概念的最佳路径。本文将带你从零开始,完成以下目标:安装并配置 Kafka 与 ZooKeeper(或 KRaft 模式)掌握单机与集群部署的基本方法熟练使用kafka-topics、kafka-console-producer、kafka-console-consumer等常用命令行工具编写并运行第一个 Java 生产者与消费者示例2. 环境准备在开始之前,请确保你的机器满足以下条件:操作系统:Linux / macOS / Windows(本文以 Linux/macOS 命令为主,Windows 用户可使用 WSL 或 Git Bash)JDK:JDK 8 或更高版本(推荐 JDK 11+)内存:至少 2GB 可用内存(Kafka 与 ZooKeeper 均需占用一定内存)检查 JDK 是否安装成功:java-version如果未安装,请先安装 JDK 并配置JAVA_HOME环境变量。3. 下载与安装 Kafka3.1 下载 Kafka访问 Apache Kafka 官网 下载最新的二进制压缩包。本文以 Kafka 3.6.0 为例(该版本同时支持 ZooKeeper 与 KRaft 模式)。# 下载wgethttps://downloads.apache.org/kafka/3.6.0/kafka_2.13-3.6.0.tgz# 解压tar-xzfkafka_2.13-3.6.0.tgz# 进入目录cdkafka_2.13-3.6.03.2 目录结构说明解压后的目录结构如下:bin/:包含所有可执行脚本(启动、停止、命令行工具等)config/:包含所有配置文件(server.properties、zookeeper.properties 等)libs/:Kafka 运行所需的依赖库4. 单机部署:ZooKeeper 模式(传统方式)在 Kafka 3.x 之前,Kafka 依赖 ZooKeeper 来管理集群元数据、选举控制器等。虽然 KRaft 模式正在逐步取代 ZooKeeper,但了解传统模式仍然很有必要。4.1 启动 ZooKeeperKafka 自带 ZooKeeper 脚本,无需单独安装。使用默认配置启动:# 启动 ZooKeeper(使用 Kafka 自带的配置)bin/zookeeper-server-start.sh config/zookeeper.properties启动成功后,ZooKeeper 默认监听2181端口。4.2 启动 Kafka Broker打开另一个终端,启动 Kafka Broker:# 启动 Kafka Brokerbin/kafka-server-start.sh config/server.properties默认配置下,Kafka 监听9092端口,并连接本地的 ZooKeeper(localhost:2181)。4.3 验证启动可以通过查看日志确认启动成功。日志中会出现类似以下信息:[KafkaServer id=0] Started (kafka.server.KafkaServer)5. 单机部署:KRaft 模式(推荐)KRaft 模式是 Kafka 3.3+ 引入的新一代元数据管理机制,去除了对 ZooKeeper 的依赖,简化了部署和运维。对于新项目,强烈推荐使用 KRaft 模式。5.1 生成集群 ID首先,需要生成一个唯一的集群 ID:# 生成集群 IDKAFKA_CLUSTER_ID="$(bin/kafka-storage.sh random-uuid)"echo$KAFKA_CLUSTER_ID5.2 格式化存储目录使用生成的集群 ID 格式化日志目录:# 格式化存储目录(注意:此操作会清空该目录下的所有数据)bin/kafka-storage.shformat-t$KAFKA_CLUSTER_ID-cconfig/kraft/server.properties5.3 启动 Kafka格式化完成后,直接启动 Kafka 即可(无需启动 ZooKeeper):# 启动 KRaft 模式的 Kafkabin/kafka-server-start.sh config/kraft/server.propertiesKRaft 模式下,Kafka 默认监听9092端口,控制器端口为9093。6. 集群部署(以 KRaft 模式为例)生产环境中通常需要部署多节点集群以保证高可用。下面以 3 节点 KRaft 集群为例,说明部署步骤。6.1 准备配置文件复制三份server.properties,分别命名为server-1.properties、server-2.properties、server-3.properties,并修改以下关键配置:节点 1(server-1.properties):process.roles=broker,controller node.id=1 controller.quorum.voters=1@localhost:9093,2@localhost:9094,3@localhost:9095 listeners=PLAINTEXT://:9092,CONTROLLER://:9093 advertised.listeners=PLAINTEXT://localhost:9092 log.dirs=/tmp/kraft-combined-logs-1节点 2(server-2.properties):process.roles=broker,controller node.id=2 controller.quorum.voters=1@localhost:9093,2@localhost:9094,3@localhost:9095 listeners=PLAINTEXT://:9094,CONTROLLER://:9095 advertised.listeners=PLAINTEXT://localhost:9094 log.dirs=/tmp/kraft-combined-logs-2节点 3(server-3.properties):process.roles=broker,controller node.id=3 controller.quorum.voters=1@localhost:9093,2@localhost:9094,3@localhost:9095 listeners=PLAINTEXT://:9096,CONTROLLER://:9097 advertised.listeners=PLAINTEXT://localhost:9096 log.dirs=/tmp/kraft-combined-logs-3注意:controller.quorum.voters必须列出所有控制器的 ID 和地址,格式为id@host:port。6.2 格式化并启动集群对每个节点执行格式化(使用同一个集群 ID):# 节点 1bin/kafka-storage.shformat-t$KAFKA_CLUSTER_ID-cconfig/kraft/server-1.properties# 节点 2bin/kafka-storage.shformat-t$KAFKA_CLUSTER_ID-cconfig/kraft/server-2.properties# 节点 3bin/kafka-storage.shformat-t$KAFKA_CLUSTER_ID-cconfig/kraft/server-3.properties然后分别启动三个节点:bin/kafka-server-start.sh config/kraft/server-1.properties bin/kafka-server-start.sh config/kraft/server-2.properties bin/kafka-server-start.sh config/kraft/server-3.properties启动完成后,三个节点共同组成一个 Kafka 集群。7. 常用命令行工具Kafka 提供了丰富的命令行工具,用于管理主题、生产和消费消息。下面介绍最常用的三个。7.1 kafka-topics:主题管理kafka-topics用于创建、查看、修改和删除主题。创建主题:# 创建名为 test-topic 的主题,3 个分区,1 个副本bin/kafka-topics.sh--create\--topictest-topic\--partitions3\--replication-factor1\--bootstrap-server localhost:9092查看主题列表:bin/kafka-topics.sh--list--bootstrap-server localhost:9092查看主题详情:bin/kafka-topics.sh--describe--topictest-topic --bootstrap-server localhost:9092删除主题:bin/kafka-topics.sh--delete--topic
返回列表