当前位置: 首页 > news >正文

Pull模式和Push模式

Pull模式是一种消息消费模式,其中客户端主动从服务端拉取数据。
优点:客户端可以根据自己的消费能力来消费数据,不存在消息堆积的情况。
缺点:消息处理可能不及时,可能存在大量无效请求,客户端需要考虑拉取频率逻辑。
例如:在Apache Kafka中,Pull模式是Kafka新增的方式,使用该模式时,消费者可以自主选择从哪个分区开始拉取消息,并可以自主控制拉取消息的速度。Kafka作为消费者维护着一个offset,表示消费者已经消费的消息序号;当消费者拉取消息时,Kafka会返回该消费者还没有消费的消息。
总结:Pull模式允许客户端根据自己的需求和能力来获取数据。但是,这也意味着客户端需要更多的逻辑来控制数据的拉取和处理。

Push模式是一种消息传递模式,其中服务端主动将消息推送给客户端。
优点:消息处理的及时性很高,一旦服务端收到消息后,就立刻将消息推送给消费者,消费者能立刻对收到的消息进行消费。
缺点:当消息量比较大时,对消费者性能要求较高,由于消费者无法控制服务端消息的推送速度,因此一旦消息量大,那么消费者消费的压力就比较大。
例如:在Kafka中,Push模式是Kafka最初实现的默认方式。在这种模式下,生产者将消息直接推送到Kafka集群中的分区中,分区会自动将消息存储在磁盘上,并异步的将消息传输到消费者。
总结:Push模式提供了消息处理的及时性,但是在处理大量消息时可能会对消费者造成压力。

相关文章:

  • 计网Lesson11 - 虚拟机网络环境及socket概述
  • docker 修改镜像存储路径
  • 从前端Vue到后端Spring Boot:接收JSON数据的正确姿势
  • Lombok
  • 如何使用ssh key免密码登录服务器?
  • el-tree基础的树形节点设置节点不能选中高亮出来,对已经选中的节点设置disabled,对当前节点刚选中后设置禁用disabled
  • [React源码解析] Fiber (二)
  • mfc140.dll找不到了要怎么解决?教你多种修复mfc140.dll的方法
  • C语言——如何进行文件操作
  • [k8s系列]:kubernetes·概念入门
  • C++中 this指针、构造函数、析构函数
  • 数据结构系统刷题
  • 【vue】图片加载骨架
  • 如何做好一份全面的市场调查报告?
  • 2024年数学建模美赛 分析与编程
  • 2017届校招提前批面试回顾
  • 345-反转字符串中的元音字母
  • Angular 响应式表单 基础例子
  • Linux后台研发超实用命令总结
  • PHP 7 修改了什么呢 -- 2
  • vagrant 添加本地 box 安装 laravel homestead
  • vuex 笔记整理
  • 从setTimeout-setInterval看JS线程
  • 动态魔术使用DBMS_SQL
  • 使用 Docker 部署 Spring Boot项目
  • 用Visual Studio开发以太坊智能合约
  • 原生Ajax
  • 湖北分布式智能数据采集方法有哪些?
  • 没有任何编程基础可以直接学习python语言吗?学会后能够做什么? ...
  • ​io --- 处理流的核心工具​
  • #mysql 8.0 踩坑日记
  • (19)夹钳(用于送货)
  • (echarts)echarts使用时重新加载数据之前的数据存留在图上的问题
  • (MonoGame从入门到放弃-1) MonoGame环境搭建
  • (二刷)代码随想录第15天|层序遍历 226.翻转二叉树 101.对称二叉树2
  • (附源码)ssm户外用品商城 毕业设计 112346
  • (附源码)流浪动物保护平台的设计与实现 毕业设计 161154
  • (三)docker:Dockerfile构建容器运行jar包
  • (三十五)大数据实战——Superset可视化平台搭建
  • (转)socket Aio demo
  • . ./ bash dash source 这五种执行shell脚本方式 区别
  • ..thread“main“ com.fasterxml.jackson.databind.JsonMappingException: Jackson version is too old 2.3.1
  • .NET C# 使用 iText 生成PDF
  • .net core 6 集成 elasticsearch 并 使用分词器
  • .NET Core WebAPI中使用swagger版本控制,添加注释
  • .NET Framework .NET Core与 .NET 的区别
  • .net 怎么循环得到数组里的值_关于js数组
  • .NET/C# 编译期间能确定的相同字符串,在运行期间是相同的实例
  • .NET6 开发一个检查某些状态持续多长时间的类
  • .vue文件怎么使用_我在项目中是这样配置Vue的
  • @RequestParam详解
  • [20180224]expdp query 写法问题.txt
  • [android] 手机卫士黑名单功能(ListView优化)
  • [android]-如何在向服务器发送request时附加已保存的cookie数据
  • [Asp.net MVC]Bundle合并,压缩js、css文件