MQ是什么Q?

1. MQ是什么?

MQ是Message Queue,消息队列。
队列是一种FIFO先进先出的数据结构,消息队列就是存放消息的队列。
消息由生产者发送到MQ进行排队,然后由消费者对消息进行处理。

想象一下,你正在公司改bug,领导告诉你这个问题今天必须搞定。
而这个时候,你的快递到了,快递小哥疯狂地给你打电话让你去取时,你会怎么做?
“帮我放在菜鸟驿站吧,谢谢!”

在上边的例子中,“快递” 就是消息,“菜鸟驿站” 就是MQ。

2. MQ有啥用?

1. 异步

有了菜鸟驿站之后,快递小哥不用等着你去取快递,你也随时可以去菜鸟驿站拿了,双方的效率都得到了提高。

我们知道异步能提高系统的响应速度和吞吐量,但是却不好实现,需要考虑很多东西。
而引入MQ就可以很方便的帮我们的系统实现异步处理,从而提高系统的性能。

2. 解耦

快递小哥把快递放到菜鸟驿站后,就可以去送下一个快递了,并不用依赖你什么时候才去取
而你也不用管到底是哪个快递小哥给你送来的,你只需要去菜鸟驿站拿就行了。

消息队列也是一样,MQ可以对服务之间进行解耦,减少服务之间的影响
从而提高系统的稳定性和可拓展性。

3. 削峰

你双11剁手买买买了一堆东西之后,过了几天快递小哥突然给你送来一大堆快递,让你一次性把他们都抗回家去,你也会像突然收到一大堆消息的服务一样崩溃吧,不如让他把所有的快递都先放到菜鸟驿站,你一个一个再去取。

MQ可以以稳定的系统资源应对突发的流量冲击,从而防止服务的崩溃。

3. MQ有啥缺点?

1. 系统复杂度提高,引入了MQ,肯定系统架构会变得比之前复杂
如何保证消息不丢失?
如何保证消息不会重复调用?
如何保证消息的顺序?
2. 系统可用性降低,因为一旦MQ宕机了,整个系统都会受到影响
3. 数据一致性问题
比如A系统发消息,需要B、C两个系统一同处理,如果B成功而C失败了,应该怎么办?

引入了MQ,这些问题都需要进行额外的考虑,所以不是所有的系统都适合使用MQ。

你可能感兴趣的