乐趣区

关于中间件: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。

退出移动版