MQ介绍

292 阅读2分钟

一、什么是消息中间件 (MQ)

全称MessageQueue,是在消息传输过程中保存消息的容器,主要用于程序和程序直接通信,异步和解耦。

image.png

二、MQ作用(使用场景)

解耦

没有使用MQ的场景 image.png

  • 订单系统如果通过接口的形式将数据同步给库存系统、支付系统、物流系统,此时X系统也想要这个数据,订单系统就要修改代码,添加调用X系统的接口来同步数据,库存系统不想要这个数据了,订单系统又要修改代码,删除调用库存系统接口的代码。这样订单系统就和库存系统、支付系统、物流系统、X系统产生了耦合。 使用MQ的场景 image.png

  • 如果用MQ的方式,订单系统只需要将同步的数据放在MQ里面,哪个系统想要这个数据,就去MQ队列里面去消费就可以了。

异步

没有使用MQ的场景 image.png

  • 订单系统在本地操作执行了1个sql语句耗时20ms,又调用库存系统耗时300ms,调用支付系统耗时300ms,调用物流系统耗时300ms,这样一个接口下来要执行大概1秒钟。

使用MQ的场景 image.png

  • 用MQ优化一下,订单系统在本地操作执行了1个sql语句耗时20ms,订单系统将消息放到MQ中耗时30ms,这样一个接口执行的时间就在50ms左右。

削峰

没有使用MQ的场景 image.png

  • 接口请求量达到了5000/s,但是DB的处理能力有限,只能处理2000/s的请求。数据库是支撑不住这么大的并发量的。 使用MQ的场景 image.png
  • 采用MQ的方式,先将请求放到MQ中,然后消费者慢慢的在MQ中消费请求,可以1000/s的速度处理,这样数据库也能很好的处理。

三、MQ的劣势

  • 系统引入的外部依赖越多,系统的稳定性越差,一旦MQ宕机,就会对业务造成影响。
  • MQ的加入增加了系统的复杂度,需要关注消息丢失,消息堆积,消息重复消费等问题。