Kafka消息系统采用的是一种结合了 Pull 模式和 Push 模式的混合模型。这种模型被称为“发布-订阅”模型,并通过使用消费者组来实现。
-
Push 模式:
- Kafka 具有 Push 特性,其中生产者将消息推送到 Kafka Broker,而 Kafka Broker 将这些消息推送给订阅了相关主题的消费者。
- 当有新消息到达时,Kafka 主动将消息推送给订阅者,这使得消费者能够实时接收到消息。
-
Pull 模式:
- Kafka 也使用 Pull 特性,其中消费者可以以自己的速度拉取消息。消费者可以周期性地或在需要时请求获取新的消息。
- 每个消费者都有自己的位置信息(偏移量),可以通过拉取的方式获取新消息。这种机制使得消费者能够按照自己的速率进行处理。
-
消费者组(Consumer Group):
- 消费者组是使 Pull 模式和 Push 模式结合的关键。每个消费者属于一个消费者组,并订阅一个或多个主题的分区。
- 在同一个消费者组内,每个分区的消息只会被消费者组内的一个消费者拉取和处理,但是可以有多个消费者组,从而实现横向扩展。
通过使用消费者组,Kafka 可以提供以下特性:
- Push 特性: 每个消费者组内的消费者能够实时接收到消息,就像是消息被推送一样。
- Pull 特性: 每个消费者可以以自己的速度拉取消息,控制处理速率,避免了推送模式可能引发的压力。
这种混合模型使得 Kafka 适用于各种场景,包括实时数据流处理、大规模事件处理等。
Was this helpful?
0 / 1