Kafka 操作流程(零基础完整流程)

今天:

我们不讲复杂理论。

直接:

从:

txt 复制代码
启动 Kafka
↓
创建 Topic
↓
发送消息
↓
消费消息

完整走一遍。

你学完:

至少会:

txt 复制代码
真正把 Kafka 跑起来

一、Kafka 整个流程图(先建立概念)

Kafka 最核心流程:

txt 复制代码
生产者(发消息)
↓
Topic(存消息)
↓
消费者(读消息)

例如:

txt 复制代码
Go程序
↓
发送 "hello"
↓
Kafka保存
↓
另一个Go程序读取

二、第一步:安装 Docker

因为:

现在:

Kafka 一般都用 Docker 跑。

先测试:

bash 复制代码
docker -v

如果:

输出:

txt 复制代码
Docker version xxx

说明 Docker 正常。


三、第二步:下载 Kafka 镜像

bash 复制代码
docker pull bitnami/kafka

四、什么是镜像

镜像:

你可以理解成:

txt 复制代码
Kafka 安装包

五、第三步:启动 Kafka 容器(重点)

执行:

bash 复制代码
docker run -d \
--name kafka \
-p 9092:9092 \
-e KAFKA_CFG_NODE_ID=1 \
-e KAFKA_CFG_PROCESS_ROLES=broker,controller \
-e KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER \
-e KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,CONTROLLER://:9093 \
-e KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092 \
-e KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=1@localhost:9093 \
-e ALLOW_PLAINTEXT_LISTENER=yes \
bitnami/kafka

六、这里到底发生了什么

Docker:

会:

txt 复制代码
创建 Kafka 容器
↓
启动 Kafka 服务

七、查看 Kafka 是否启动成功

bash 复制代码
docker ps

如果看到:

txt 复制代码
kafka

说明成功。


八、9092 是什么

Kafka 默认端口:

txt 复制代码
9092

以后:

Go 程序:

连接:

txt 复制代码
localhost:9092

就是连接 Kafka。


九、第四步:创建 Topic(重点)

Kafka:

消息必须放进:

txt 复制代码
Topic

里面。


十、Topic 是什么

Topic:

你可以理解成:

txt 复制代码
消息分类

例如:

txt 复制代码
订单消息
日志消息
用户消息

十一、创建 Topic

执行:

bash 复制代码
docker exec -it kafka kafka-topics.sh \
--create \
--topic order-topic \
--bootstrap-server localhost:9092

十二、命令详细解析


docker exec

txt 复制代码
进入容器执行命令

kafka-topics.sh

Kafka Topic 管理工具。


--create

表示:

txt 复制代码
创建 Topic

--topic order-topic

Topic 名字:

txt 复制代码
order-topic

--bootstrap-server

连接 Kafka。


十三、查看 Topic

执行:

bash 复制代码
docker exec -it kafka kafka-topics.sh \
--list \
--bootstrap-server localhost:9092

十四、如果看到

txt 复制代码
order-topic

说明:

Topic 创建成功。


十五、第五步:发送消息(Producer)

现在:

开始发消息。


十六、启动生产者

执行:

bash 复制代码
docker exec -it kafka kafka-console-producer.sh \
--topic order-topic \
--bootstrap-server localhost:9092

十七、现在终端会卡住

这是正常的。

因为:

Kafka:

正在等待:

txt 复制代码
你输入消息

十八、输入消息

例如:

txt 复制代码
hello

回车。

再输入:

txt 复制代码
world

十九、这些消息去哪了

Kafka:

已经:

txt 复制代码
存进 order-topic

了。


二十、第六步:消费消息(Consumer)

再开一个终端。


二十一、启动消费者

执行:

bash 复制代码
docker exec -it kafka kafka-console-consumer.sh \
--topic order-topic \
--from-beginning \
--bootstrap-server localhost:9092

二十二、会发生什么

终端:

会打印:

txt 复制代码
hello
world

二十三、完整流程(重点)

你现在:

已经真正完成:

txt 复制代码
生产者
↓
发送消息
↓
Kafka Topic
↓
消费者读取

这就是:

Kafka 最核心流程。


二十四、为什么生产者和消费者是两个终端

因为:

真实项目:

它们本来:

就是:

txt 复制代码
两个不同程序

例如:


订单系统

负责:

txt 复制代码
发送消息

库存系统

负责:

txt 复制代码
读取消息

二十五、第七步:Go 操作 Kafka

真正开发:

不会手敲命令。

而是:

txt 复制代码
Go代码操作Kafka

二十六、安装 Go Kafka 库

bash 复制代码
go get github.com/segmentio/kafka-go

二十七、Go 发送消息(生产者)


producer.go

go 复制代码
package main

import (
	"context"
	"fmt"

	"github.com/segmentio/kafka-go"
)

func main() {

	// 创建生产者
	w := kafka.NewWriter(kafka.WriterConfig{
		Brokers: []string{"localhost:9092"},
		Topic:   "order-topic",
	})

	// 发消息
	err := w.WriteMessages(context.Background(),
		kafka.Message{
			Value: []byte("hello kafka"),
		},
	)

	if err != nil {
		panic(err)
	}

	fmt.Println("发送成功")
}

二十八、运行生产者

bash 复制代码
go run producer.go

二十九、Kafka 里已经有消息了

现在:

消费者:

就能读到。


三十、Go 消费消息(消费者)


consumer.go

go 复制代码
package main

import (
	"context"
	"fmt"

	"github.com/segmentio/kafka-go"
)

func main() {

	// 创建消费者
	r := kafka.NewReader(kafka.ReaderConfig{
		Brokers: []string{"localhost:9092"},
		Topic:   "order-topic",
		GroupID: "g1",
	})

	for {

		// 读取消息
		msg, err := r.ReadMessage(context.Background())

		if err != nil {
			panic(err)
		}

		fmt.Println(string(msg.Value))
	}
}

三十一、运行消费者

bash 复制代码
go run consumer.go

三十二、消费者会打印

txt 复制代码
hello kafka

三十三、现在你已经真正会 Kafka 了

你已经掌握:


Kafka 启动

bash 复制代码
docker run

创建 Topic

bash 复制代码
kafka-topics.sh

发送消息

bash 复制代码
kafka-console-producer.sh

或者:

go 复制代码
WriteMessages()

消费消息

bash 复制代码
kafka-console-consumer.sh

或者:

go 复制代码
ReadMessage()

三十四、真实项目中的 Kafka 流程

真实开发:

最经典:

就是:


用户下单

订单服务:

txt 复制代码
发 Kafka 消息

Kafka

负责:

txt 复制代码
存消息

其他服务

消费:

  • 库存
  • 短信
  • 推荐
  • 邮件

三十五、Kafka 为什么重要

因为:

现代后端:

越来越:

txt 复制代码
微服务化

系统之间:

不再:

txt 复制代码
直接调用

而是:

txt 复制代码
通过 Kafka 通信

三十六、最后一句总结(必须记住)

Kafka 最核心操作流程:

txt 复制代码
启动 Kafka
↓
创建 Topic
↓
Producer 发消息
↓
Topic 存消息
↓
Consumer 读消息

真正重要:

先掌握:

txt 复制代码
发
收

别一开始:

研究:

txt 复制代码
Partition
Offset
副本机制

容易直接劝退。

相关推荐
向夏威夷 梦断明暄12 小时前
从架构特点到功能缺陷,重新认识分析型分布式数据库
数据库·分布式·架构
Wang's Blog13 小时前
Go-Zero 项目开发19:基于 Kafka 的异步消息存储与转发实战
golang·kafka
Devin~Y14 小时前
互联网大厂 Java 面试实录:Spring Boot、MyBatis、Redis、Kafka、Spring Security、RAG 与 MCP 全链路问答
java·redis·kafka·mybatis·spring security·spring mvc·sprint boot
AAA@峥14 小时前
Ceph 集群配置管理完整指南
运维·数据库·分布式·ceph
心如鉄补15 小时前
分布式链路追踪系统之docker-compose安装skywalking
分布式·docker·skywalking
努力努力再努力wz15 小时前
【分布式系统与 RPC 框架系列】从单机瓶颈到远程调用:一文理解分布式架构与 RPC 原理
linux·网络·c++·分布式·网络协议·rpc·架构
ACP广源盛1392462567317 小时前
此芯 P1 AI BOX / AI NAS@ACP#IX8008、IX8024 应用场景与市场机会
大数据·人工智能·分布式·单片机·嵌入式硬件
网络工程小王1 天前
【HCIE-AI】12.deepspeed分布式并行训练进阶版
人工智能·pytorch·分布式·学习·昇腾·deepspeed
ACP广源盛139246256732 天前
国产算力互联IX8024@ACP#Kimi K3 开源后的端侧部署硬件架构分析
大数据·人工智能·分布式·单片机·嵌入式硬件
花生了什么事o2 天前
分布式 ID 生成方案:从数据库自增到雪花算法
数据库·分布式·算法