95、Kafka是pull?push?优劣势分析

Kafka是pull?push?优劣势分析

一、pull模式

  • 根据consumer的消费能力进行数据拉取,可以控制速率
  • 可以批量拉取、也可以单条拉取
  • 可以设置不同的提交方式,实现不同的传输语义

缺点:

如果kafka没有数据,会导致consumer空循环,消耗资源

解决:

通过参数设置,consumer拉取数据为空或者没有达到一定数量时进行阻塞

二、push模式

不会导致consumer循环等待

缺点:

速率固定、忽略了consumer的消费能力,可能导致拒绝服务或者网络拥塞等情况

三、额外补充

Kafka最初考虑的问题是,customer应该从brokes拉取消息还是brokers将消息推送到consumer,也就是pull还push。

Kafka遵循了一种大部分消息系统共同的传统的设计:producer将消息推送到broker,consumer从broker拉取消息。

一些消息系统比如Scribe和Apache Flume采用了push模式,将消息推送到下游的consumer。

这样做有好处也有坏处:由broker决定消息推送的速率,对于不同消费速率的consumer就不太好处理了。

消息系统都致力于让consumer以最大的速率最快速的消费消息,但不幸的是,push模式下,当broker推送的速率远大于consumer消费的速率时,consumer恐怕就要崩溃了。

最终Kafka还是选取了传统的pull模式。

Pull模式的另外一个好处是consumer可以自主决定是否批量的从broker拉取数据。

Push模式必须在不知道下游consumer消费能力和消费策略的情况下决定是立即推送每条消息还是缓存之后批量推送。

如果为了避免consumer崩溃而采用较低的推送速率,将可能导致一次只推送较少的消息而造成浪费。

Pull模式下,consumer就可以根据自己的消费能力去决定这些策略。

Pull有个缺点是,如果broker没有可供消费的消息,将导致consumer不断在循环中轮询,直到新消息到达。

相关推荐
小五Z1 小时前
RabbitMQ高级特性--重试特性
分布式·rabbitmq
小五Z1 小时前
RabbitMQ高级特性--TTL和死信队列
分布式·rabbitmq
塞尔维亚大汉1 小时前
OpenHarmony之分布式软总线discovery_service.c(二)
分布式·嵌入式·harmonyos
DemonAvenger1 小时前
Go sync 包详解:Mutex、RWMutex 与使用陷阱
分布式·架构·go
Jing_saveSlave2 小时前
Kafka Stream从入门到精通:构建高吞吐、低延迟的实时流处理应用
大数据·分布式·kafka·linq
小样vvv2 小时前
【Kafka】从理论到实践的深度解析
分布式·kafka
RainbowSea3 小时前
2. RabbitMQ 的详细安装步骤(两种方式,第一种:yum 安装;第二种:docker 容器安装)
java·消息队列·rabbitmq
RainbowSea3 小时前
1. 初始 RabbitMQ 消息队列
java·消息队列·rabbitmq
小五Z3 小时前
RabbitMQ--延迟队列&事务&消息分发
分布式·rabbitmq
Arbori_262155 小时前
Spark 程序的本地模式和集群模式
大数据·分布式·spark