• 什么是 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进行异步调用。需要处理消息被重复消费以及防止消息丢失的问题。

  • 相关阅读:
    Jmeter-逻辑控制器,定时器,前置处理器,取样器
    叮咚!请互联网人签收这份工作技能攻略
    聚合查询、联合查询【mysql数据库】
    C语言指针变量的引用距离
    Elasticsearch 8.9启动时构建接收Rest请求的hander过程源码
    大数据ClickHouse进阶(八):ClickHouse的with子句
    四、C语言运算符
    java计算机毕业设计基于安卓Android的在线心理咨询与健康App
    在portacle中获取EMACS Lisp帮助文档的方法(Win11)
    Paper reading: ISDNet: Integrating Shallow and Deep Networks CVPR2022
  • 原文地址:https://blog.csdn.net/qq_35434967/article/details/127927676