RPC比较适合- 客户端调用哪个服务器比较明确

  • 调用需要立即得到返回结果
  • 架构简单
      在一个由多个微服务构成的大系统中,某些关键服务间的调用应当在较短的时间内返回,而且各个微服务的专业化程度较高,同一个请求的关注者只有一个。这个时候就应该用RPC。   比如在一个ERP系统中,有一个管理仓储的微服务,以及一个负责订单的微服务。新建订单时需要查知当前的存货是否充足,如果不充足就通知用户;提交订单时预订指定数量的货物,如果此时货物不错,也要终止订单的提交,并通知用户。显然在这种场景下是不允许较大的延迟,否则会影响用户体验。所以应该使用RPC,及时返回仓储情况。
    MQ比较适合
  • 消息的发送者和消费者需要解耦的情况
  • 发送者并不明确谁是消费者
  • 发送者并不关心谁来消费消息
  • 各个消费者可以从不同的角度入手处理消息
  • 消费者的处理结果也不返回给发送者
  • 消息的发送和处理是异步的
  • 消息的关注者不止一个
      在一个由多个微服务构成的大系统中,会有一些非关键服务,用来执行一些不需要立刻得到结果的计算。而且它们的计算结果并不会返回给消息的发送者。这个时候就应该使用MQ。   比如在一个ERP系统中有一些日志服务、业务监控服务等。这些服务会发布一些系统事件,针对这些事件可能有多个应用关注。对于日志服务,当系统出现某些异常情况时需要浏览日志,查找问题的根源;也可以在分析系统运行的瓶颈时提供关键数据。对于业务监控系统,例如货物入仓出仓的消息,可以被报表系统关注,生成报表;也可以被配货系统关注,及时补足所需库存。

转载于:https://blog.51cto.com/tenderrain/2152674

RPC和MQ各自适合的应用场景相关推荐

  1. RPC和MQ对比及其适用/不适用场合

    2019独角兽企业重金招聘Python工程师标准>>> 系统结构 RPC系统结构:+----------+ +----------+ | Consumer | <=> | ...

  2. RxJava中BehaviorSubject适合的使用场景

    上篇大体介绍了RxJava中几种常见的Subject特性 下面我们着重阐述BehaviorSubject在Android中适合的使用场景及其实现方式 场景:A页面正在请求数据D时立马跳到B页面,B页面 ...

  3. php抢购排队是怎样做的,基于swoole的抢购排队通用中间件,适合抢购秒杀场景,跟具体业务解耦...

    queue Note: Replace kcloze kcloze https://github.com/YaochufaTech/swoole-queue pei.greet@gmail.com y ...

  4. Redis的七种武器及其适合的应用场景

    长生剑.孔雀翎.碧玉刀.多情环.离别钩.霸王枪.拳头是古龙笔下的七种武器,而本文打算将Redis的几种使用方式 Strings.Hashs.Lists.Sets.Sorted Sets.Pub/Sub ...

  5. 架构面试精讲第三节 分布式技术RPC、MQ、Redis、Mysql、restful详解

    07 RPC:如何在面试中展现出"造轮子"的能力? 我们知道,很多应用系统发展到一定规模之后,都会向着服务化方向演进,演进后的单体系统就变成了由一个个微服务组成的服务化系统,各个微 ...

  6. arm云教室服务器_成都凌点科技告诉你ARM集群服务器适合的应用场景有哪些

    1 什么是高密度ARM集群服务器 ARM集群服务器,是在一个机箱内设计N个高性能ARM处理器,每个ARM处理器配置独立的内存及存储,所有的处理器通过高速网络(千兆或万兆网络)进行相互之间以及对外通信的 ...

  7. mongodb 的使用场景和不适合使用的场景

     1.mongodb介绍 MongoDB (名称来自"humongous") 是一个可扩展的高性能,开源,模式自由,面向文档的数据库.它使用C++编写.MongoDB特点: a ...

  8. 为什么使用mq?具体的使用场景是什么?

    mq的作用很简单,削峰填谷.以电商交易下单的场景来说,正向交易的过程可能涉及到创建订单.扣减库存.扣减活动预算.扣减积分等等.每个接口的耗时如果是100ms,那么理论上整个下单的链路就需要耗费400m ...

  9. 高可用服务 AHAS 在消息队列 MQ 削峰填谷场景下的应用...

    在消息队列中,当消费者去消费消息的时候,无论是通过 pull 的方式还是 push 的方式,都可能会出现大批量的消息突刺.如果此时要处理所有消息,很可能会导致系统负载过高,影响稳定性.但其实可能后面几 ...

最新文章

  1. android nfcDemo
  2. Spring事务TransactionProxyFactoryBean属性-transactionAttributes的意义
  3. [BZOJ 1588] [HNOI 2002] 营业额统计
  4. 专栏订阅须知《必读》
  5. 【Rényi差分隐私和零集中差分隐私(差分隐私变体)代码实现】差分隐私代码实现系列(九)
  6. Iocomp .net仿真仪表控件包
  7. 如何编写完美的 Python 命令行程序?
  8. VB 提取TextBox 文本框中指定一行字符串
  9. C# 解析Excel中的那些事儿
  10. 用户需求分析:背后隐藏的门槛
  11. 大气海洋数值模式经验总结
  12. 计算机程序设计语言发展经历了,简述计算机程序设计语言的发展历程
  13. html5光线传感器,HTML5设备传感器总结
  14. PTA作业记录1(计算存款利息)
  15. 推荐视频:神奇的大脑 之 三个错觉演示
  16. 2021年衡水中学高考成绩查询,2019年衡水中学的高考成绩会怎样,看看往年的战绩就明白了...
  17. 公共经济学(期末复习资料)
  18. 初探Java设计模式5:一文了解Spring涉及到的9种设计模式
  19. matlab轴的优化设计,基于MATLAB优化工具箱的机床主轴优化设计
  20. 分贝表示的放大倍数--增益

热门文章

  1. 如何修改Fiori Launchpad里Tile计数调用的时间间隔
  2. 对android.mk debug
  3. 从零开始学习Sencha Touch MVC应用之十九
  4. 推荐一个短小精干的JavaScript对话框
  5. Vue.js 打造酷炫的可视化数据大屏
  6. pod实例数是什么意思_[灌水] Kubernetes In Action: Pod
  7. wordpress archive.php,哪个网址将导致wordpress使用archive.php?
  8. redis内存行数据库细节
  9. 解决用户登录查库问题
  10. 安装DelayExchange插件