消息队列 Kafka 涉及的专有名词和术语进行定义和解释,方便您更好地理解相关概念并使用该产品。
-
Broker: 消息队列 Kafka 集群包含一个或多个消息处理服务器,该服务器被称为 Broker。
-
Topic: 每条发布到消息队列 Kafka 集群的消息都有一个主题,这个主题被称为 Topic。通过 Topic 可以对消息进行分类。每个 Topic 可以由一个或多个分区(Partition)组成,存储于一个或多个 Broker 上。
-
分区(Partition): 消息分区;Partition 是物理上的概念,每个 Topic 包含一个或多个 Partition。
-
Producer: 消息发布者,也称为消息生产者,负责生产并发送消息到 Kafka Broker。
-
Consumer: 消息订阅者,也称为消息消费者,负责向 Kafka Broker 读取消息并进行消费。
-
Consumer Group: 一类 Consumer 的标识,这类 Consumer 通常接收并消费同一类消息,且消费逻辑一致。Consumer Group 和 Topic 的关系是 N:N,同一个 Consumer Group 可以订阅多个 Topic,同一个 Topic 也可以被多个 Consumer Group 订阅。
消息队列 Kafka 系统架构
一个典型的消息队列 Kafka 集群包含:
- Producer:通过 push 模式向消息队列 Kafka Broker 发送消息,可以是网站的页面访问、服务器日志等,也可以是 CPU 和内存相关的系统资源信息;
- Kafka Broker:消息队列 Kafka 的服务器,用于存储消息;支持水平扩展,一般 Broker 节点数量越多,集群吞吐率越高;
- Consumer Group:通过 pull 模式从消息队列 Kafka Broker 订阅并消费消息;
- Zookeeper:管理集群的配置、选举 leader,以及在 Consumer Group 发生变化时进行负载均衡。
-
消息队列 Kafka 采用 Pub/Sub(发布/订阅)模型,其中:
- Consumer Group 和 Topic 的关系是 N:N。 同一个 Consumer Group 可以订阅多个 Topic,同一个 Topic 也可以同时被多个 Consumer Group 订阅。
- 同一 Topic 的一条消息只能被同一个 Consumer Group 内的任意一个 Consumer 消费,但多个 Consumer Group 可同时消费这一消息。
-
消息队列 Kafka 的 Pub/Sub 模型