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
副本机制

容易直接劝退。

相关推荐
未若君雅裁14 小时前
分布式接口幂等性设计:唯一索引、Token 与分布式锁
分布式·微服务
还在忙碌的吴小二14 小时前
TLog 分布式日志追踪新手入门指南
分布式
轻刀快马14 小时前
从底层 CPU 架构看透现代分布式与并发编程
分布式·架构·cpu
晚烛14 小时前
CANN 分布式通信与 HCCL:多 NPU 协作的底层机制
开发语言·人工智能·分布式·python·深度学习
岳麓丹枫00114 小时前
PostgreSQL 15.7 CDC → Flink → Kafka 操作笔记
postgresql·flink·kafka
青云计划14 小时前
分布式单飞锁
分布式
会编程的土豆14 小时前
Kafka 零基础入门(最基本用法)
分布式·kafka
会编程的土豆14 小时前
Kafka 入门笔记(核心语法 + 用法)
笔记·分布式·kafka
song50115 小时前
多模态模型在昇腾上的部署架构
人工智能·分布式·深度学习·架构·transformer·交互