Kafka实现发布-订阅模式的主要组件是:
Producer
- 负责将消息发布到 Kafka cluster 中的特定 Topic
- 每条消息会被append到该 Topic 的一个分区日志中
Topic
- 一个类别,类似于传统的消息队列
- 可以有多个分区,每个分区有一个日志
Partition
- 一个物理上的分区,属于一个Broker
- 每个分区有一个日志,表示这个分区记录的所有消息
Consumer
- 从指定的 Topic 中消费消息
- 一个分区只能由一个 Consumer 消费,属于一个 Consumer Group
Consumer Group
- 为消费者分组,一个组内不同的消费者消费不同分区中的消息
实现发布-订阅的步骤是:
- Producer 发布到 Topic
- Topic 按照分区策略发送到不同分区
- 每个 Consumer Group 下的每个 Consumer 只消费一个分区
- 每个分区只对应一个 Consumer
- 实现 Topic 的 Publish 和 Consumer Group的 Subscribe
Kafka实现发布-订阅模式的关键在于:
- Topic:实现 Publish 功能
- Partition:保证 partition 级的顺序
- Consumer Group:实现 Subscribe 功能
通过 Producer 发布到 Topic,Consumer Group订阅 Topic 分区中的消息,实现了发布-订阅模式。