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不断在循环中轮询,直到新消息到达。

相关推荐
霑潇雨14 分钟前
Spark学习基础转换算子案例(单词计数(WordCount))
java·大数据·分布式·学习·spark·maven
富士康质检员张全蛋1 小时前
Kafka架构 数据发送保障
分布式·架构·kafka
zhojiew2 小时前
使用 Spark Connect 在 Amazon EMR on EC2 上实现远程 Spark开发
大数据·分布式·spark
庞轩px3 小时前
第二篇:RocketMQ事务消息——分布式事务的最终一致性方案
分布式·rocketmq
momom4 小时前
分布式缓存集群高可用架构与一致性哈希优化实践
分布式·后端·架构
heimeiyingwang4 小时前
【架构实战】分布式事务TCC模式:两阶段提交的工程艺术
分布式·架构
WhoAmI4 小时前
Elasticsearch实战指南:构建实时全文检索系统
elasticsearch·kafka
GIS数据转换器4 小时前
蓄能电力大数据监管平台
大数据·人工智能·分布式·数据挖掘·数据分析·智慧城市
zhangzeyuaaa4 小时前
Kafka 核心原理超通俗详解|Offset、消费组、分区、持久化一次讲透
分布式·kafka
隔壁阿布都5 小时前
Kafka `acks` 参数取值全解
分布式·kafka