Kafka 核心概念
作为架构师,理解 Kafka 的核心概念至关重要。这些概念是构建高效、可靠的 Kafka 系统的基础。
以下是需要掌握的 Kafka 核心概念及其详细说明:
1. Topic
-
定义:Topic 是 Kafka 中用于存储和分类消息的逻辑命名空间。每个 Topic 代表一类数据流,
例如日志、交易记录等。 -
作用:通过 Topic,可以将不同类型的消息分开,方便管理和消费。
-
操作:创建、删除和列出现有的 Topic。
# 创建一个新的 Topic kafka-topics.sh --create --topic my_topic --bootstrap-server localhost:9092 --partitions 3 --replication-factor 2 # 列出所有 Topic kafka-topics.sh --list --bootstrap-server localhost:9092 # 删除一个 Topic kafka-topics.sh --delete --topic my_topic --bootstrap-server localhost:9092
2. Partition
- 定义:Partition 是 Topic 的子集,是一个有序的、不可变的消息队列。每个 Partition 可以存储多个消息。
- 作用:通过 Partition,可以实现消息的并行处理,提升系统的吞吐量。
- 操作:创建 Topic 时指定 Partition 数量,或者在现有 Topic 上增加 Partition。
# 增加现有 Topic 的 Partition 数量 kafka-topics.sh --alter --topic my_topic --partitions 5 --bootstrap-server localhost:9092
3. Offset
- 定义:Offset 是 Partition 中每条消息的唯一标识。Offset 是一个递增的整数,用于定位和跟踪消息。
- 作用:通过 Offset,可以确保每条消息在消费时的顺序和位置。
- 操作:消费者通过 Offset 跟踪消费进度,支持自动和手动提交 Offset。
// 消费者配置示例 Properties props = new Properties(); props.put("bootstrap.servers", "localhost:9092"); props.put("group.id", "test_group"); props.put("enable.auto.commit", "true"); props.put("auto.commit.interval.ms", "1000"