• 什么是 MQ


    MQ的概念

    MQ (Message Queue)消息队列,是在消息传输过程中存储消息的容器。多用于分布式系统之间的通信。
    队列是基础数据结构中 “先进先出” 的一种数据结构。
    消息对列,指把要传输的数据消息放在队列中,用队列机制来实现消息传递。

    MQ基本模型

    在这里插入图片描述
    上图中,“P”是我们的生产者,“C”是我们的消费者,中间就是存放消息的消息队列。
    生产者将消息发送到MQ,MQ将消息推送给指定的消费者,或者消费者去MQ 拉取特定的消息。
    生产者和消费者可以当做客户端,MQ就是服务端(也可以叫作消息中间件)。

    MQ的作用

    1、解耦容错

    未使用MQ前,库存系统、支付系统、物流系统其中任何一个子系统出现故障,都会造成下单操作异常。
    在这里插入图片描述
    使用MQ后,订单系统和库存系统、支付系统、物流系统进行了系统间的解耦,任何一个子系统出现故障不影响订单系统和其它子系统。比如物流系统出现故障了,需要几分钟进行修复,此时物流系统要处理的数据保存在了MQ中,用户的下单操作可以继续进行,当物流系统恢复后,继续处理订单信息即可。下单用户感受不到物流系统发生的故障,提高系统的容错性。
    在这里插入图片描述

    2、异步提速

    未使用MQ前,库存系统、支付系统、物流系统之间是同步(必须一个接一个)处理数据的,总共花费时间是3*300ms+20ms=920ms;
    在这里插入图片描述
    使用MQ后,我们在库存系统处理数据的同时,可以进行支付系统、物流系统处理数据,完成系统间的异步处理数据。总共花费时间是300ms+20ms+5ms=325ms;
    在这里插入图片描述

    3、削峰限流

    比如:订单系统最多能处理1000次/s订单,这在平常时段没问题,但在高峰期,如果有1万次下订单,此时系统是处理不了的,否则系统会发生故障。使用MQ做缓冲,这时消息会积压在MQ服务器,在高峰期过后一段时间内,消息会一直维持在服务器能承受的范围内 ,直到消费完积压的消息,提升系统的稳定性。
    在这里插入图片描述

    MQ劣势

    1、系统可用性降低。

    系统引入的外部依赖越多,系统的稳定性越差。一旦MQ宕机,就会对业务造成影响。需要利用各种手段提高MQ的高可用。

    2、系统复杂度提高

    大大提高了系统的复杂度,以前系统间是同步的远程调用,现在是通过MQ进行异步调用。需要处理消息被重复消费以及防止消息丢失的问题。

  • 相关阅读:
    【夯实算法基础】差分约束
    揭秘老外聊天时常用的英文缩写
    阿里云认证有什么用?考哪个比较好?
    大数据面试题——spark
    让我们进入面向对象的世界(一)
    Qt SQL:QSqlDatabase
    智慧物联网医疗,树立可持续性智能化和便利化新标杆
    从python图像动漫化的设计和应用快速入门vue+python+深度学习+接口+部署
    Controller 层编码规范
    JavaScript_3 基本语法2:数组,函数,字符串
  • 原文地址:https://blog.csdn.net/qq_35434967/article/details/127927676