一、MQ概述
1、什么是MQ?
- MQ:消息队列(MessageQueue)。队列是一种FIFO先进先出的数据结构。消息由生产者发送到MQ中进行排队,然后按原来的顺序交由消息的消费者来处理。QQ和微信就是典型的MQ。官网地址
2、MQ的作用(优点)
- 异步
- 作用:提高系统的响应速度、吞吐量。所有的请求不用再等待去发送消息了,任何时候都可以将消息发送出去,然后接着去干别的事情。
- 例如:快递员配送快递,直接送到客户的家里效率十分的低下,当引入菜鸟驿站后,快递员只需把快递放到菜鸟驿站,就可以继续去派送其他快递了,客户根据自己的时间去菜鸟驿站取快递。
- 解耦
- 作用:
- 1、服务之间进行解耦才能减少服务之间的影响,提高系统整体的稳定性以及可拓展性。
- 2、解耦后可以实现数据分发。生产者发送一个消息后,可以由一个或者多个消费者进行消费,并且消费者的增加或者减少对生产者是没影响的。
- 例如:英文书籍我们看不懂,所以需要编辑社将文章翻译成其他语言,这样就可以完成英文与其他语言的交流。
- 作用:
- 削峰
- 作用:以稳定的系统资源来应对突发的流量冲击。
- 例如:长江每年都会涨水,但是下游出水口的速度基本稳定。当涨水之后,会先把水引入到三峡大坝存储起来,再让下游慢慢排水。
3、MQ的缺点
- 系统可用性降低
系统引入的外部依赖增多,系统的稳定性就会变差。一旦MQ宕机,对业务会产生影响,这就需要考虑如何保证MQ的高可用性。 - 系统复杂度提高
引入MQ后系统的复杂度会大大提高。以前服务之间可以进行同步的服务调用,引入MQ之后就会变成异步调用,数据的链路就会变得更复杂,并且还会带来一些其他问题,例如:如何保证消息不会被丢失、不会被重复消费等等。 - 消息一致性问题
A系统处理完业务,通过MQ发送给B和C系统进行后续的业务处理。如果B系统处理完成,C系统处理失败怎么办?这就需要考虑如何保证消息数据处理的一致性。