`
george.gu
  • 浏览: 73292 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

异步系统设计:push vs pull

阅读更多

今天讨论问题时,有个同事说系统A是主动去系统B里“拿”消息,我们把它称为“pull”模式。他认为pull方式效率比较低,为什么不用“push”模式呢。就是说让系统B收到消息主动通知并把消息发给系统A。

我认为他说的是对的。

可是老板给我们讲了一个故事,让我觉得单纯从模式的角度来探讨系统性能有点“坐井观天”。

如果系统B通知系统A之后,系统A会消费这条消息,如果这个处理过程包含一系列的复杂操作,那么这个时候系统B在做什么呢?在等!系统B block等待系统A的返回境况。哈哈,我们发现系统B的效率很慢,但是不是有本身引起的。

 

我们就不能简单地说push就比pull好了。

事实上,以上的情况可以通过系统B-->JMS Queue-->系统A解决。也就是:

push into JMS Queue

pull from JMS Queue

让两个系统松散耦合。

 

可是引入JMS之后就一定能增加效率吗?我们拭目以待,具体情况具体分析。

分享到:
评论

相关推荐

    让你的HpSocket Pull支持同步(应答式)操作

    为了让使用者能方便快速地学习和使用 HP-Socket ,迅速掌握框架的设计思想和使用方法,特此精心制作了大量 Demo 示例(如:PUSH 模型示例、PULL 模型示例、性能测试示例以及其它编程语言示例)。HP-Socket 目前运行...

    65性能设计篇之-异步处理1

    【异步处理】在IT行业中,特别是在性能设计领域,是一个重要的优化策略,旨在提升系统效率、稳定性和容错能力。异步处理的核心思想是避免阻塞主线程,使得系统能够并行处理多个任务,从而充分利用系统资源,提高整体...

    毕业设计: 房屋租赁系统练习项目

    掌握Git的基本操作,如commit、push、pull、merge、branch等。 12. **文档编写**:完整的项目需要有详细的设计文档、用户手册和技术文档,帮助理解系统架构、操作流程和维护指南。 在"HouseRentalSystem2-master...

    pullstreams是一个简单的流模式用于学习pullstreams

    Pull-streams是一种在JavaScript生态系统中处理数据流的方式,它与常见的push-style streams(如Node.js中的stream模块)有所不同。这种模式更侧重于需求驱动的数据流动,即数据的消费者决定何时拉取新的数据,而...

    zeromq 代理模式的一些问题

    这些模式都是为了处理分布式系统中的异步通信和数据流控制。 1. 请求-响应模式(Rep-Req): 在这个模式下,客户端发送请求到代理,代理接收到请求后将其转发到服务端,服务端处理完请求后通过代理将响应返回给...

    数据库课程设计:一个前后端分离的SpringBoot+Vue点餐系统源码.zip

    Git有助于团队协作和代码管理,你需要熟悉基本的Git命令如clone、add、commit、push、pull等。 7. **部署与运行**:项目完成后,你还需要学会如何在本地或服务器上部署这个点餐系统,可能涉及到Tomcat、Jenkins等...

    基于ZeroMQ的分布式系统通信方法.pdf

    分布式系统通信方法是分布式系统设计的关键点之一。在论文“基于ZeroMQ的分布式系统通信方法.pdf”中,作者探讨了使用ZeroMQ来实现分布式系统中节点间通信的方法。文中提到的分布式系统架构通常由一个服务器和多个...

    用户手册LAT1346-PWM脉宽跟随方案介绍-v1.0

    - **Push-pull模式**: 配置定时器使其能够支持Push-pull模式。 - **Balance Idle功能**: 当检测到外部EEV事件时,触发Balance Idle功能,以确保即使在PWM关闭期间也能维持输出脉宽的一致性。 - **Auto Enable功能**:...

    QCon 北京 2010大会演讲之:构建可扩展微博架构,演讲者:Tim Yang,新浪微博技术架构师

    如果每天有5,000万条微博发布,平均下来每秒就有578条,而系统设计容量需要应对2,000到100,000的IO操作。这样的高并发会导致数据库读取超时、前端超时(503错误)等问题。 为了解决这些挑战,微博架构采用了异步...

    【系统架构】最全最强解析:支付宝钱包系统架构内部剖析(架构图).docx

    Metamorphosis 的设计理念是基于pull机制,而不是一般MQ的push模型。它大量利用了zookeeper做服务发现和offset存储。Meta的设计跟Kafka是完全一致的,但Meta相对于Kafka特有的一些功能,如文本协议设计、纯Java实现...

    阿里rocketMQ

    RocketMQ的设计目标是提供低延迟、高可靠、高可扩展的消息传递服务,适用于大规模分布式系统中的消息通讯。它支持多种消息模式,如点对点(Point-to-Point)、发布/订阅(Publish/Subscribe)以及事务消息等,为企业...

    RocketMQ源码

    RocketMQ是一款开源的消息中间件,由阿里巴巴开发并贡献给Apache软件基金会,被广泛应用于分布式系统中,以提供高效、稳定、可靠的异步消息传递服务。本文将深入探讨RocketMQ的源码,解析其核心概念、架构设计以及...

    前端面试题 必看--

    - Git基础:掌握commit、push、pull、branch、merge等常用命令。 - Git协作:理解分支策略,解决冲突的方法。 9. 性能优化与安全: - SEO优化:了解标题、关键词、描述的设置,URL结构优化等。 - XSS和CSRF攻击...

    RocketMQ入门实战及源码解析.7z

    2. 消息拉取:Consumer通过Pull方式从Broker拉取消息,也可设置为Push模式,由Broker主动推送给Consumer。 3. 消息存储:消息持久化在Broker上,支持多种存储策略,如RocksDB、File等。 4. 消息确认:Consumer消费...

    软件设计师教程

    - **系统设计**:根据需求,设计师会进行系统架构设计,包括模块划分、接口定义和数据结构设计。 - **设计模式与原则**:学习常用的设计模式(如工厂模式、单例模式、观察者模式等)以及SOLID原则,提升代码的可...

    前端面试题及答案.zip

    - Git的基本操作:clone、add、commit、push、pull。 - 分支管理:merge、rebase、解决冲突。 9. 测试与调试: - 单元测试:Mocha、Jest等测试框架的使用。 - 调试技巧:浏览器开发者工具的运用。 10. 性能...

    RocketMQ原理分析.rar

    RocketMQ是阿里巴巴开源的一款分布式消息中间件...通过深入学习“2019-08-31_RocketMQ原理分析”中的内容,你可以更全面地了解RocketMQ的架构、功能以及如何在实际项目中应用和优化,从而提升你的分布式系统设计能力。

    238道高频考题.pdf

    - Git的基本操作:commit、push、pull、branch、merge - Git工作流的理解与应用 8. 测试与调试: - 单元测试和集成测试 - 使用Chrome DevTools进行性能分析和错误排查 9. 工具链: - Webpack或Rollup等模块...

    rocketmq-master

    RocketMQ的核心设计目标是为大规模分布式系统提供低延迟、高并发的消息传递服务,同时也支持消息的顺序处理和消息回溯等特性。 一、RocketMQ的基本概念 1. 生产者(Producer):生产者是消息的源头,负责发送消息...

Global site tag (gtag.js) - Google Analytics