

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

直接远程调用的方式:

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

问题二:可维护性问题
当想要加一个x系统的时候,就需要修改订单系统的代码,然后访问x系统

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

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

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

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

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

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

MQ做法:



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

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





假设有A B C三个系统 A调用了B系统过后,得到的结果再去调用C系统
例如:刚才的订单系统,下了订单过后,订单系统发送消息给MQ,不需要等待库存系统等待把消息消费
