Kafka的发布-订阅模式如何实现?

Kafka实现发布-订阅模式的主要组件是:

Producer

  • 负责将消息发布到 Kafka cluster 中的特定 Topic
  • 每条消息会被append到该 Topic 的一个分区日志中

Topic

  • 一个类别,类似于传统的消息队列
  • 可以有多个分区,每个分区有一个日志

Partition

  • 一个物理上的分区,属于一个Broker
  • 每个分区有一个日志,表示这个分区记录的所有消息

Consumer

  • 从指定的 Topic 中消费消息
  • 一个分区只能由一个 Consumer 消费,属于一个 Consumer Group

Consumer Group

  • 为消费者分组,一个组内不同的消费者消费不同分区中的消息

实现发布-订阅的步骤是:

  1. Producer 发布到 Topic
  2. Topic 按照分区策略发送到不同分区
  3. 每个 Consumer Group 下的每个 Consumer 只消费一个分区
  4. 每个分区只对应一个 Consumer
  5. 实现 Topic 的 Publish 和 Consumer Group的 Subscribe

Kafka实现发布-订阅模式的关键在于:

  • Topic:实现 Publish 功能
  • Partition:保证 partition 级的顺序
  • Consumer Group:实现 Subscribe 功能

通过 Producer 发布到 Topic,Consumer Group订阅 Topic 分区中的消息,实现了发布-订阅模式。