Skip to content

核心概念 ​

Topic(主题) ​

消息的分类,类似于数据库的表。

bash
# 创建主题
kafka-topics.sh --create --topic my-topic \
  --partitions 3 --replication-factor 2 \
  --bootstrap-server localhost:9092

# 查看主题
kafka-topics.sh --list --bootstrap-server localhost:9092

Partition(分区) ​

Topic 分为多个分区,实现水平扩展和并行处理。

Topic: my-topic
├── Partition 0: [msg1, msg2, msg3]
├── Partition 1: [msg4, msg5, msg6]
└── Partition 2: [msg7, msg8, msg9]

分区策略 ​

  • Round Robin:轮询分配
  • Key Hash:相同 key 到同一分区
  • 自定义:实现 Partitioner 接口

Consumer Group(消费者组) ​

一组消费者共同消费一个 Topic。

Topic (3 partitions)
├── Partition 0 → Consumer 1
├── Partition 1 → Consumer 1
└── Partition 2 → Consumer 2

规则 ​

  • 一个分区只能被组内一个消费者消费
  • 消费者数量 ≤ 分区数量
  • 不同消费者组独立消费

Offset(偏移量) ​

消息在分区中的位置索引。

bash
# 查看偏移量
kafka-run-class.sh kafka.tools.GetOffsetShell \
  --broker-list localhost:9092 --topic my-topic

提交方式 ​

  • 自动提交:定期提交
  • 手动提交:显式控制

Broker ​

Kafka 集群中的服务器节点。

bash
# 查看集群信息
kafka-broker-api-versions.sh --bootstrap-server localhost:9092

参考:https://kafka.apache.org/documentation/