• MQ的概述及优缺点及使用场景


     直接的远程调用:例如:dubbo中的RPC

    MQ:优势

    1.应用解耦:

    直接远程调用的方式:

    问题一:容错性问题

    假如库存系统挂掉了,然后订单系统在下订单的时候,整个链路就走不通了,导致订单系统也出现问题,(整个系统的容错性比较低)

     问题二:可维护性问题

    当想要加一个x系统的时候,就需要修改订单系统的代码,然后访问x系统

    MQ解决上面两个问题

    当用户下订单访问订单系统,订单系统发一条消息给MQ,这时候就可以给用户返回说下单成功了。然后后面的系统只需要从MQ中把消息拿出来并在自己的系统中消费就可以了。

    问题一:还是当库存系统 出现问题了

     库存系统修复好了,只需要从MQ中拿出消息,消费就好了。并不会导致订单系统也出现问题

    问题二:可维护性问题:当加了一个x系统的时候。订单系统一行代码也不要改。只需要让x系统从MQ中把消息拿出来消费就好了。

     2.异步提速

    远程调用的方式:订单系统调DB然后订单系统调库存系统,然后订单系统调支付系统,然后订单系统调物流系统,然后订单系统调X系统。

     使用MQ过后:订单系统只需要保存自己的数据库花费20ms,然后再向MQ发送消息。25ms就能得到响应

     3.削峰填谷

    远程调用的方式 :假设A系统每秒最大处理1000请求,突然用户多了,每秒5000请求,A系统就挂了

     MQ做法:

     MQ劣势

    1.系统的可用性降低

     远程调用的方式:只需要保证AB系统都没问题,那么整个系统就没问题

     使用MQ过后:还要保证mq没问题

     2.系统的复杂度提高

     

    3.一致性问题 

    MQ的使用应该满足什么条件 

    1.生产者不需要从消费者处获得反馈

     假设有A B C三个系统 A调用了B系统过后,得到的结果再去调用C系统

    2.容许短暂的不一致性

    例如:刚才的订单系统,下了订单过后,订单系统发送消息给MQ,不需要等待库存系统等待把消息消费

    3.确实有效果

  • 相关阅读:
    线程池简单介绍
    Linux网络-HTTPS协议
    C++项目——云备份-①-项目介绍&环境搭建
    芯片电源引脚为什么要加一个100nF电容
    络达开发---自定义BLE服务(二):功能实现
    RFID技术引领汽车零部件加工新时代
    Vue样式属性绑定
    学习vue3第四节(ref以及ref相关api)
    Mac 运行 C/C++代码
    解决wget下载过慢的问题
  • 原文地址:https://blog.csdn.net/weixin_54401017/article/details/126140546