1、什么是MQ?

MQ全称 Message Queue(消息队列),是在消息的传输过程中保存消息的容器。多用于分布式系统之间进行通信。
如下图所示:

在这里插入图片描述

2、MQ的优劣势

2.1、MQ的优势

因为MQ有三大优势,如下所示:

2.1.1、应用解耦

如果我们的应用与应用直连的话,如果一方宕机,可能会导致整个系统不能使用,使用 MQ 就可以使得应用间解耦,提升容错性和可维护性。
如下图所示:

在这里插入图片描述

2.1.2、异步提速

例如下图所示,当我们下一个订单之后,我们的订单系统需要连接我们的库存系统,支付系统以及物流系统,而与每个系统交互的时间为300ms,在每得到一个响应时才能与下个系统进行交互,最后还要与数据库交互20ms,那么总共就是920ms,但是当我们使用的MQ之后,请看下面。

在这里插入图片描述

我们使用了MQ之后,我们就会发现,当有用户下单时,我们只需要将订单放到MQ中,然后其它系统异步去获取,不需要等待,我们放一条消息为5ms,然后与数据库交互是20ms,那么用户感知的整个过程就只有25ms,其它工作都会异步执行,效率提高了很多。

在这里插入图片描述

2.1.3、削峰填谷

如下图所示,我们的A系统每次只能处理最大1000个请求,但是某一瞬间请求数量突然增多,达到了每秒5000个请求,那么这个时候,如果我们用了MQ,A系统就不会直接接收到这5000个请求,而是自己会去MQ中每秒拿1000个请求去处理,这就叫削峰填谷。
在这里插入图片描述

在这里插入图片描述

2.2、MQ的劣势

2.2.1、系统可用性降低

系统引入的外部依赖越多,系统稳定性越差。一旦 MQ 宕机,就会对业务造成影响。
产生的问题就是:
如何保证MQ的高可用?

2.2.2、系统复杂度提高

MQ 的加入大大增加了系统的复杂度,以前系统间是同步的远程调用,现在是通过 MQ 进行异步调用。
产生的问题就是:
如何保证消息不被丢失等情况?

3、MQ常见的产品

3.1、目前市面上MQ常见的产品比较一

在这里插入图片描述

3.2、Kafka、RabbitMQ和RocketMQ三款产品比较

在这里插入图片描述

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐