核心概念
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:9092Partition(分区)
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