MQ

同步和异步通讯

微服务间通讯有同步和异步两种方式:

同步通讯:就像打电话,需要实时响应。

异步通讯:就像发邮件,不需要马上回复。

两种方式各有优劣,打电话可以立即得到响应,但是你却不能跟多个人同时通话。发送邮件可以同时与多个人收发邮件,但是往往响应会有延迟。

同步通讯

Feign调用就属于同步方式,虽然调用可以实时得到结果,但存在下面的问题:

同步调用的优点:

·时效性较强,可以立即得到结果

同步调用的问题:

·耦合度高

·性能和吞吐能力下降

·有额外的资源消耗

·有级联失败问题

异步通讯

异步调用则可以避免上述问题:

我们以购买商品为例,用户支付后需要调用订单服务完成订单状态修改,调用物流服务,从仓库分配响应的库存并准备发货。

在事件模式中,支付服务是事件发布者(publisher),在支付完成后只需要发布一个支付成功的事件(event),事件中带上订单id。

订单服务和物流服务是事件订阅者(Consumer),订阅支付成功的事件,监听到事件后完成自己业务即可。

为了解除事件发布者与订阅者之间的耦合,两者并不是直接通信,而是有一个中间人(Broker)。发布者发布事件到Broker,不关心谁来订阅事件。订阅者从Broker订阅事件,不关心谁发来的消息。

Broker 是一个像数据总线一样的东西,所有的服务要接收数据和发送数据都发到这个总线上,这个总线就像协议一样,让服务间的通讯变得标准和可控。

好处:

·吞吐量提升:无需等待订阅者处理完成,响应更快速

·故障隔离:服务没有直接调用,不存在级联失败问题

·调用间没有阻塞,不会造成无效的资源占用

·耦合度极低,每个服务都可以灵活插拔,可替换

·流量削峰:不管发布事件的流量波动多大,都由Broker接收,订阅者可以按照自己的速度去处理事件

缺点:

·架构复杂了,业务没有明显的流程线,不好管理

·需要依赖于Broker的可靠、安全、性能

技术对比

MQ,中文是消息队列(MessageQueue),字面来看就是存放消息的队列。也就是事件驱动架构中的Broker。

几种常见MQ的对比:

追求可用性:Kafka、 RocketMQ 、RabbitMQ

追求可靠性:RabbitMQ、RocketMQ

追求吞吐能力:RocketMQ、Kafka

追求消息低延迟:RabbitMQ、Kafka

MQ基础信息mq的简介相关推荐

  1. MQ(Message Queue)简介

    一.何为MQ? MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法.应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们.消息传 ...

  2. IBM Websphere MQ 基础0:Linux下安装IBM MQ 7.5

    背景 无.公司就是用的IBM WebSphere MQ作为消息中间件,本文记载how install it. 一. 安装包检查与准备 1. 检查 通过rpm –qa检查是否已经安装 IBM MQ,若已 ...

  3. RocketMQ——MQ基础知识

    文章目录 1. 什么是MQ? 2. MQ解决了哪些问题? 3. 使用MQ带来了哪些问题? 4. MQ中常见的协议有哪些? 5. 常见的消息中间件   鉴于号称"人见天堂"的杭州阿里 ...

  4. IBM Websphere MQ 基础4:Channel通道与MQ间消息传输

    概念 WebSphere® MQ uses two different types of channels: A message channel, which is a unidirectional ...

  5. 【MQ基本概念 MQ的工作原理】

    一. MQ 基本概念 1 . MQ 概述 MQ 全称 Message Queue (消息队列),是在消息的传输过程中保存 消息的容器.多用于分布式系统之间进 行通信. 小结 MQ ,消息 队列,存储消 ...

  6. J2EE基础之Web服务简介

    J2EE基础之Web服务简介 1.什么是Web服务? 在人们的日常生活中,经常会查询网页上某城市的天气信息,这些信息都是动态的.实时的,它是专业的气象站提供的一种服务.例如,在网上购物时,通常采用网上 ...

  7. Mybatis配置信息浅析 MyBatis简介(二)

    官方文档入门篇中有明确说明 每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为中心的. SqlSessionFactory 的实例可以通过 SqlSessionF ...

  8. W3school:CSS基础:教程、简介、语法、选择器、使用(在HTML中引入)

    W3school:CSS基础:教程.简介.语法.选择器.使用(在HTML中引入) 教程.简介: 链接:https://www.w3school.com.cn/css/index.asp 一.CSS语法 ...

  9. RabbitMQ:什么是消息队列MQ?为什么使用消息队列MQ?入门MQ先学哪种?(一)

    0. 引言 MQ(Message Queue):消息队列,如今在各类业务场景中已经被广泛使用,特别在并发量日益增涨的业务和微服务架构中,消息队列能够帮助我们解决很多传统方式所不能解决的问题. 所以今天 ...

最新文章

  1. 世界银行拨款2293万美元支持印度并网屋顶太阳能
  2. java小程序死机_求解,刚写的小程序,一运行我机器就死机
  3. 从实例入手学习Shiro自定义Realm实现查询数据进行验证
  4. 在Spring MVC中处理域对象
  5. 小数前的0在html不显示,jsp小数显示问题 例如 我在oracle 数据库中查询出来的是 0.01 但是在jsp页面上就显示成 .01 没有前面的0...
  6. ubuntu版本号查询
  7. 从一个登录页面浅淡MVVM(二)
  8. 最不靠谱CEO,一句话让公司损失上千亿元
  9. java 内置注解入门
  10. 字典树-大量字符串前缀及出现次数是否存在统计(Trie树-java)算法实现
  11. java用户登录窗口怎么删除_JAVA图形界面用户登录后如何关闭登录的对话框
  12. 小程序保存图片相册无响应
  13. 二叉树遍历——递归算法
  14. CentOS下安装jdk11
  15. 教你用迅雷下载百度网盘的文件
  16. Word参考文献设置-尾注后添加致谢等内容
  17. 自动驾驶仿真测试的意义
  18. (附源码)springboot社区文明养宠平台 毕业设计 231609
  19. Android根据输入法的状态隐藏和关闭输入法
  20. java 如何转化成机器指令_Java代码到底是如何编译成机器指令的

热门文章

  1. 响应式ui_在应用程序远程通知ui中响应本机
  2. C++ socket函数解析
  3. python getattr 函数
  4. 单片机综合实验 - 03 | 音乐门铃设计
  5. 波形分析软件 android,新版 PicoScope 软件提供更出色的波形分析和功能 – 免费获取!...
  6. onSenUI 配置环境
  7. 操作系统——进程与线程の选择题整理
  8. aws sqs java_示例 Amazon SQS 函数代码 - AWS Lambda
  9. ceRNA调控机制简介
  10. 字典的数据怎么转变为excel_Excel小技巧——快速为多行数据排列名次