MQ学习——为什么使用消息队列?

ps|本文是最近看儒猿技术窝做的一些笔记

如果面试官问为什么要用消息队列,那么其实就是问问你消息队列都有哪些使用场景,然后你项目里具体是什么场景,说说你在这个场景里消息队列是什么?

而且面试官期望的回答是,你们公司有个xx业务场景,这个业务场景有个什么技术挑战,如果不用MQ可能会很麻烦,但是你现在用了MQ之后带给了你很多的好处。

MQ的使用场景

解耦

在这里插入图片描述
在这里插入图片描述

异步

在这里插入图片描述

在这里插入图片描述

削锋

在这里插入图片描述

在这里插入图片描述


凡事总有利弊之分的,不可能十全十美的。

MQ的缺点:

系统可用性降低

想一下,如果加了MQ,数据的接收与消费都需经过MQ,那岂不是MQ的责任特别重大。

那假如MQ出故障了,系统A就没法发送消息到MQ了,然后系统BCD也没法消费到消息了,那整个系统就崩溃了,就没有办法运转了。

系统复杂度提高

比如说,系统A本来就给系统B发送一条数据就可以了,结果因为系统A和MQ之间协调出现了一些问题,系统A不小心把同一条数据给系统B发送了两次,导致系统B内部插入2条一模一样的数据;

同理,数据也可能会在MQ那里丢失,导致系统B没法收到数据;

还有可能是MQ给系统BCD发送的顺序发送错误,顺序错乱,导致系统B接收到其他系统的数据;

那假如系统B宕机,那要传给系统B的数据就会积压在MQ了。

一致性问题

比如说,有人给系统A发送个请求,本来这个请求应该是系统ABCD都执行成功了,才能返回的。结果,系统ABC执行都成功了,系统D执行失败了,就导致整个请求给用户返回是成功的,但是后台逻辑实际上是没有完全执行完的。


如果想要详细了解的话,我觉得可以看石杉老师讲解的视频,真心不错。
附上链接:儒猿技术窝 | Java工程师面试突击第一季【免费】

猜你喜欢

转载自blog.csdn.net/weixin_43771998/article/details/110945533
今日推荐