TECH NOTES / 中间件与数据

Kafka 入门笔记

原笔记 2022-10-22 · 整理于 2026-10-05

Kafka 的基本概念、Windows 下的旧版集群实验,以及监听地址的配置笔记。

版本说明:下面的 Windows + ZooKeeper 实验来自 Kafka 3.x。Kafka 4.0 起已移除 ZooKeeper 模式,新环境请使用 KRaft;参见 Kafka 4.0 发布说明。

官网:https://kafka.apache.org/

基础概念:

kafka集群搭建

基于win10 和 zk 集群,没有使用内置zk、kraft模式,所有不用配置 zookeeper.properties 文件,不用管 kraft 目录下面的配置

kafka集群 3个节点对应端口:

  1. broker1:9092
  2. broker2:9093
  3. broker3:9094

zk集群 3个节点client端口:

  1. zk1:2181
  2. zk2:2182
  3. zk3:2183

下载解压

官网下载并解压,这里我下载的目前最新版,3.3.1,我将它解压到了D盘kafka目录下。

KafKa入门配图 1

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

KafKa入门配图 2KafKa入门配图 3

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

KafKa入门配图 4

下面直接给出3份配置文件需要配置的地方,其它地方默认即可。

server9092.properties

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/kafka

server9093.properties

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/kafka

server9094.properties

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 启动,成功后再按照同样方法启动另外两个节点。

KafKa入门配图 5

使用可视化工具连接测试

KafKa入门配图 6

创建一个topic,发送一条消息测试,进入windows目录下,打开cmd

输入下面的命令新建名为:“hello”的topic

# 新建topic,可以更换为集群中任意IP
kafka-topics.bat --create --topic hello --bootstrap-server 127.0.0.1:9092

KafKa入门配图 7

KafKa入门配图 8

输入下面的命令,打开控制台版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入门配图 9

kafka可视化客户端工具(Kafka Tool)

其它可视化工具:Kafka GUI客户端、可视化管理工具——Kafka Assistant

http://www.redisant.cn/ka

概述

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入门配图 10


如何使用

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

KafKa入门配图 11

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这个地址

其它文章:

文章配图