kafka中的push和pull设计

一、生产者到broker

  • 生产者push消息到broker,采用推模式,生产者将消息推送给消费者。

  • push模式的目标是尽可能以最快速度传递消息。生产者采用pull的话,不是很适合有成千上万的生产者的情况,假如生产者写入日志,broker从日志中pull,当生产者非常多,成千上万的磁盘系统并不是时时可靠的,那样大大增加了系统的复杂性。

二、broker到消费者

  • broker到消费者采用pull,拉模式。消费者主动到服务器拉取消息。

  • push模式很难适应消费速率不同的消费者,因为消息发送速率是由broker决定的。push模式的目标是尽可能以最快速度传递消息,但是这样很容易造成消费者来不及处理消息,典型的表现就是拒绝服务以及网络拥塞。而pull模式则可以根据consumer的消费能力以适当的速率消费消息。

  • 另外它有助于消费者合理的批处理消息。不同的消费者消费速率,外部硬件环境都不一样,交由消费者自己决定以何种频率拉取消息更合适。

  • 基于pull模式不足之处在于,如果broker没有数据,消费者会轮询,忙等待数据直到数据到达,为了避免这种情况,我们允许消费者在pull请求时候使用“long poll”进行阻塞,直到数据到达 。

Logo

Kafka开源项目指南提供详尽教程,助开发者掌握其架构、配置和使用,实现高效数据流管理和实时处理。它高性能、可扩展,适合日志收集和实时数据处理,通过持久化保障数据安全,是企业大数据生态系统的核心。

更多推荐