02-kafka中的push和pull设计

本文深入探讨了Kafka中消息的推送(push)和拉取(pull)机制,解析了生产者如何通过推模式高效地将消息发送到broker,以及消费者如何根据自身处理能力通过拉模式获取消息,避免了过载和等待。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

kafka中的push和pull设计

一、生产者到broker

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

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

二、broker到消费者

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

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值