Kafka 入门笔记(核心语法 + 用法)

很多人第一次学 Kafka:

都会被这些名词吓到:

txt 复制代码
Broker
Topic
Partition
Offset
Consumer Group

感觉:

特别复杂。

其实:

Kafka 核心思想:

还是:

txt 复制代码
生产者发消息
消费者收消息

只是:

Kafka 为了:

txt 复制代码
高并发
高吞吐
分布式

做了很多增强。


一、Kafka 是什么

Kafka:

本质:

txt 复制代码
高性能消息队列

用于:

  • 异步通信
  • 日志收集
  • 大数据
  • 实时流处理

二、Kafka 最经典应用

例如:

用户下单。


订单服务

发送消息:

txt 复制代码
订单创建成功

Kafka

负责:

txt 复制代码
存储消息

其他服务

消费:

  • 库存
  • 短信
  • 积分
  • 推荐系统

三、Kafka 核心概念(必须掌握)

Kafka 最核心:

只有几个东西。


四、Broker(Kafka服务器)

Kafka 服务器:

叫:

txt 复制代码
Broker

你可以理解成:

txt 复制代码
Kafka 节点

五、Topic(主题)

Topic:

本质:

txt 复制代码
消息分类

例如:

txt 复制代码
order-topic
user-topic
log-topic

六、为什么需要 Topic

因为:

系统消息:

不可能:

txt 复制代码
全混在一起

所以:

需要:

txt 复制代码
分类

七、生产者(Producer)

负责:

txt 复制代码
发送消息

例如:

订单系统。


八、消费者(Consumer)

负责:

txt 复制代码
读取消息

例如:

库存系统。


九、完整流程(重点)

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

十、Kafka 最重要概念:Partition(分区)

Kafka:

为什么性能高?

核心就在:

txt 复制代码
Partition

十一、什么是分区

一个 Topic:

可以:

txt 复制代码
拆成多个分区

例如:

txt 复制代码
order-topic

Partition0
Partition1
Partition2

十二、为什么要分区

因为:

Kafka:

可以:

txt 复制代码
并行读写

十三、类比

例如:

食堂窗口。


一个窗口

txt 复制代码
所有人排一队

很慢。


三个窗口

txt 复制代码
三队同时处理

吞吐量暴涨。


十四、Offset(偏移量)

Kafka:

不会删除消息。

它通过:

txt 复制代码
Offset

记录:

txt 复制代码
读到哪里了

十五、Offset 本质

你可以理解成:

txt 复制代码
消息编号

例如:

txt 复制代码
0
1
2
3
4

十六、消费者读取过程

消费者:

会记录:

txt 复制代码
当前读到哪个 Offset

下次:

继续往后读。


十七、Consumer Group(消费者组)

Kafka:

支持:

txt 复制代码
多个消费者一起消费

十八、为什么需要消费者组

例如:

订单太多。

一个消费者:

处理不过来。

于是:

txt 复制代码
多个消费者一起处理

十九、规则(重点)

同一个 Partition:

txt 复制代码
同一时刻
只能被一个消费者消费

二十、为什么这样设计

为了:

txt 复制代码
保证顺序

否则:

消息顺序可能乱。


二十一、Kafka 特点(必须理解)

Kafka:

最核心特点:


1. 高吞吐

特别快。


2. 顺序写磁盘

Kafka:

不是随机写。

而是:

txt 复制代码
顺序追加

所以:

性能极高。


3. 分布式

支持:

txt 复制代码
多机器集群

4. 可持久化

消息:

会写磁盘。


二十二、Kafka 和 RabbitMQ 区别

很多人:

都会问。


RabbitMQ

特点:

txt 复制代码
功能丰富
简单
稳定
业务系统常用

Kafka

特点:

txt 复制代码
吞吐极高
适合大数据
日志流

二十三、Kafka 常见场景


日志收集

例如:

服务器日志。


用户行为分析

例如:

txt 复制代码
点击
浏览
点赞

实时推荐

例如:

抖音推荐流。


大数据

例如:

实时统计。


二十四、Kafka 常见命令(重点)


二十五、启动 Kafka

新版 Kafka:

通常:

bash 复制代码
bin/kafka-server-start.sh config/server.properties

二十六、创建 Topic

bash 复制代码
bin/kafka-topics.sh \
--create \
--topic order-topic \
--bootstrap-server localhost:9092

--topic

表示:

txt 复制代码
主题名字

二十七、查看 Topic

bash 复制代码
bin/kafka-topics.sh \
--list \
--bootstrap-server localhost:9092

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

bash 复制代码
bin/kafka-console-producer.sh \
--topic order-topic \
--bootstrap-server localhost:9092

然后:

输入:

txt 复制代码
hello

消息:

就进 Kafka 了。


二十九、消费消息(消费者)

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

--from-beginning

表示:

txt 复制代码
从头开始读

三十、Go 操作 Kafka(重点)

Go:

常用库:

txt 复制代码
segmentio/kafka-go

或者:

txt 复制代码
sarama

三十一、Go 生产者示例


安装

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

发送消息

go 复制代码
package main

import (
	"context"

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

func main() {

	w := kafka.NewWriter(kafka.WriterConfig{
		Brokers: []string{"localhost:9092"},
		Topic:   "order-topic",
	})

	w.WriteMessages(context.Background(),
		kafka.Message{
			Value: []byte("hello kafka"),
		},
	)
}

三十二、代码解析


Brokers

go 复制代码
Brokers: []string{"localhost:9092"}

Kafka 地址。


Topic

go 复制代码
Topic: "order-topic"

发到哪个主题。


Value

go 复制代码
Value: []byte("hello kafka")

消息内容。


三十三、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, _ := r.ReadMessage(context.Background())

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

三十四、代码解析


GroupID

go 复制代码
GroupID: "g1"

消费者组。


ReadMessage

go 复制代码
r.ReadMessage()

读取 Kafka 消息。


三十五、Kafka 消息结构

Kafka 消息:

不仅有 Value。

还有:

txt 复制代码
Key
Value
Offset
Partition
Timestamp

三十六、Key 的作用

Key:

决定:

txt 复制代码
消息进入哪个 Partition

三十七、为什么 Key 很重要

例如:

订单消息。

希望:

txt 复制代码
同一个订单
进入同一个Partition

这样:

才能:

txt 复制代码
保证顺序

三十八、Kafka 为什么这么快(核心)

Kafka:

性能高:

核心原因:


1. 顺序写磁盘


2. 零拷贝


3. 分区并行


4. 批量发送


三十九、Kafka 真正核心思想

你一定要理解:

Kafka:

不是:

txt 复制代码
传统业务消息队列

它更偏向:

txt 复制代码
数据流平台

四十、最后总结

Kafka 本质:

txt 复制代码
高吞吐分布式消息队列

核心结构:

txt 复制代码
Producer
↓
Topic
↓
Partition
↓
Consumer Group

最核心概念:

概念 作用
Broker Kafka服务器
Topic 消息分类
Partition 分区并行
Offset 消息编号
Consumer Group 消费者组

Go 常见操作:

txt 复制代码
NewWriter → 发消息
NewReader → 收消息

Kafka 最大特点:

txt 复制代码
高吞吐
高并发
分布式
实时流处理
相关推荐
sheeta199810 小时前
LeetCode 每日一题笔记 日期:2026.05.23 题目:1752. 检查数组是否经排序和轮转得到
笔记·算法·leetcode
Frostnova丶10 小时前
【算法笔记】最短路径算法
笔记·算法·图论
東雪木10 小时前
Java 基础语法与核心数据类型 专属复习笔记
java·开发语言·笔记·java面试
song50110 小时前
多模态模型在昇腾上的部署架构
人工智能·分布式·深度学习·架构·transformer·交互
过期动态10 小时前
【RabbitMQ高级篇】生产者可靠性、MQ可靠性、消费者可靠性以及延迟队列的实现
java·数据结构·分布式·算法·rabbitmq·ruby
问心无愧051310 小时前
ctf show web入门 254
java·开发语言·笔记
解局易否结局13 小时前
昇腾CANN上手笔记:从cann-learning-hub学会ops-transformer
笔记·深度学习·transformer
摇滚侠18 小时前
Java 零基础全套教程,集合框架,笔记 153-163
java·开发语言·笔记
ゆづき19 小时前
计算机数据存储全解:从底层进制转换到存储介质演进
笔记·学习·生活