TECH NOTES / 中间件与数据
Kafka 入门笔记
原笔记 2022-10-22 · 整理于 2026-10-05
Kafka 的基本概念、Windows 下的旧版集群实验,以及监听地址的配置笔记。
版本说明:下面的 Windows + ZooKeeper 实验来自 Kafka 3.x。Kafka 4.0 起已移除 ZooKeeper 模式,新环境请使用 KRaft;参见 Kafka 4.0 发布说明。
基础概念:
- Kafka的简介
- Kafka的架构
- 《Kafka 官方文档》 介绍 | 并发编程网 – ifeve.com
- kafka同一个group 消费两个topic吗_大白话带你认识Kafka_lithops7的博客-CSDN博客
kafka集群搭建
基于win10 和 zk 集群,没有使用内置zk、kraft模式,所有不用配置 zookeeper.properties 文件,不用管 kraft 目录下面的配置
kafka集群 3个节点对应端口:
- broker1:9092
- broker2:9093
- broker3:9094
zk集群 3个节点client端口:
- zk1:2181
- zk2:2182
- zk3:2183
下载解压
官网下载并解压,这里我下载的目前最新版,3.3.1,我将它解压到了D盘kafka目录下。

在解压目录下创建一个“kafka-logs”目录,用来存放数据、日志


进去config目录,然后复制3份server.properties文件,分别命名为server9092.properties、server9093.properties、server9094.properties

下面直接给出3份配置文件需要配置的地方,其它地方默认即可。
server9092.properties
broker.id=1
listeners=PLAINTEXT://127.0.0.1:9092
log.dirs=../../kafka-logs/9092
# 只需要在最后面加 /kafka 就行了
zookeeper.connect=localhost:2181,localhost:2182,localhost:2183/kafkaserver9093.properties
broker.id=2
listeners=PLAINTEXT://127.0.0.1:9093
log.dirs=../../kafka-logs/9093
# 只需要在最后面加 /kafka 就行了
zookeeper.connect=localhost:2181,localhost:2182,localhost:2183/kafkaserver9094.properties
broker.id=3
listeners=PLAINTEXT://127.0.0.1:9094
log.dirs=../../kafka-logs/9094
# 只需要在最后面加 /kafka 就行了
zookeeper.connect=localhost:2181,localhost:2182,localhost:2183/kafka启动、验证
进入到/bin目录下,打开cmd, 输入:kafka-server-start.bat ../config/server9092.properties 启动,成功后再按照同样方法启动另外两个节点。

使用可视化工具连接测试

创建一个topic,发送一条消息测试,进入windows目录下,打开cmd
输入下面的命令新建名为:“hello”的topic
# 新建topic,可以更换为集群中任意IP
kafka-topics.bat --create --topic hello --bootstrap-server 127.0.0.1:9092


输入下面的命令,打开控制台版producer
# 开启生产者端,输入进行生产
kafka-console-producer.bat --topic hello --bootstrap-server 127.0.0.1:9092
输入下面的命令,打开控制台版consumer
# 另外打开一个终端,开启监听端,观察是否输入了生产端的消息
kafka-console-consumer.bat --topic hello --from-beginning --bootstrap-server 127.0.0.1:9092

kafka可视化客户端工具(Kafka Tool)
其它可视化工具:Kafka GUI客户端、可视化管理工具——Kafka Assistant
概述
Kafka Tool是一个用于管理和使用Apache Kafka集群的GUI应用程序。 Kafka Tool提供了一个较为直观的UI可让用户快速查看Kafka集群中的对象以及存储在topic中的消息,提供了一些专门面向开发人员和管理员的功能,主要特性包括
- 快速查看所有Kafka集群信息,包括其brokers, topics and consumers
- 查看分区中的消息内容并支持添加新消息
- 查看消费者偏移量,支持查看Apache Storm Kafka Spout消费者偏移量
- 以pretty-printed 格式显示JSON和XML消息
- 添加和删除topic以及其他管理功能
- 将单个消息从指定分区保存到本地硬盘驱动器
- 支持用户编写自己的插件以查看自定义数据格式
- 支持在Windows,Linux和Mac OS上运行
下载地址
这个软件的安装很简单,傻瓜式安装,直接下一步就可以,下载地址:https://www.kafkatool.com/download.html

如何使用
使用是比较简单的,自行使用就好。默认是用二进制来保存的,修改成字符串形式就好。

Kafka学习理解-listeners配置
listeners
broker 服务器要监听的地址及端口 . 默认是 localhost:9092 ,0.0.0.0的话 ,表示监听本机的所有ip地址.
本机配置:
- localhost : 只监听本机的地址请求, 客户端也只能用 localhost 来请求
- 127.0.0.1 : 同localhost, 在请求上可能有与区分 , 看client的请求吧 . 客户端也只能用127.0.0.1来请求
- 192.0.2.1 : 仅为示例地址,应使用客户端实际可达的地址。
- 0.0.0.0 : 本机的所有地址都监听 , 包含 localhost , 127.0.0.1, 及不同网卡的所有ip地址 , 都监听 .
listeners=PLAINTEXT://0.0.0.0:9092 advertised.listeners=PLAINTEXT://192.0.2.1:9092 listeners=PLAINTEXT://0.0.0.0:9092 advertised.listeners=INNER://192.0.2.1:9090,PRO://172.120.0.1:9092,CON:115.120.0.1:9092 listener.security.protocol.map=INNER:PLAINTEXT,PRO:PLAINTEXT,CON:PLAINTEXT inter.broker.listener.name=INNER
多网卡配置:
- A网卡ip : 只监听A网卡上的请求 , B网卡来的请求不管的
- A和B网卡ip : 可以同时配置多网卡 , 也可以用0.0.0.0来代表所有网卡
advertised.listeners
这个是对外提供的地址 , 当client请求到kafka时, 会分发这个地址.
这个地址会有三个地方用到: 集群内其他的broker,生产者,消费者
这里可以不填 , 不填就默认用 listeners 的地址.
对于生产环境, 直接用listeners的地址肯定不合适的.
这个配置可以适配多种网络环境 . 单网络环境 ,只配置一个地址 , 多网络环境可以配置多个地址.
单网络环境
对于调用者的三个地方 , 都在同一个网络环境里 , 那么只配置一个地址就好了 .
举个例子 , 有以下机器配置:
- broker 1 : 192.0.2.1
- broker 2 : 192.0.2.2
- producer : 192.0.2.3
- consumer : 192.0.2.4
所以应用都在同一个网络环境里 , 互相可以直接连通的. 那么对于broker 1 这个应用的配置就可以是:
那么其他三个应用上 , 在调用broker 1的时候 , 都是通过192.0.2.1:9092这个地址 .
多网络环境
一般是内外网 , 就两个环境 , 其他博客上这种配置很多 .
这里我们假设有三个网络环境 , kafka 集群内一个网络 , 生产者一个网络 , 消费者一个网络.
- broker 1 : 192.0.2.1 , 172.120.0.1 , 115.120.0.1
- broker 2 : 192.0.2.2
- producer : 172.120.0.2
- consumer : 115.120.0.2
这时候broker 1 的网络配置,可以是如下配置:
设置了三个地址 . broker之间通信使用INNER, 当producer来调用时 , 给172.120.0.1:9092这个地址 , 当consumer来调用时 , 给115.120.0.1:9092这个地址
其它文章:
- Kafka 3.0新特性 详解(一)-阿里云开发者社区
- Kafka--延迟队列--使用/实现/原理_IT利刃出鞘的博客-CSDN博客_kafka延迟消息队列
- kafka消费的三种模式
- springboot-kafka实战 - 冷小为 - 博客园
- Kafka学习之路 (二)Kafka的架构 - 扎心了,老铁 - 博客园
- SpringBoot 整合 Spring Kafka,消息重试和死信队列的应用_赶路人儿的博客-CSDN博客_spring kafka 死信队列
- Spring-Kafka —— 消费重试机制实现 - 曹伟雄 - 博客园
- 【spring-kafka】@KafkaListener详解与使用_石臻臻的杂货铺的博客-CSDN博客_@kafkalistener
- kafka的partition数量这样来定
- Kafka Producer重试参数retries设置取舍【实战笔记】_瓜农老梁的博客-CSDN博客
- kafka学习(二)——admin与producer的基本实例_谜一样的Coder的博客-CSDN博客
- Kafka创建SSL证书 - Ruthless - 博客园
- Kafka配置4--Windows下配置Kafka的SSL证书_51CTO博客_kafka配置