MQ学习——为什么使用消息队列?
程序员文章站
2022-03-10 18:35:44
ps|本文是最近看儒猿视频做的一些笔记如果面试官问为什么要用消息队列,那么其实就是问问你消息队列都有哪些使用场景,然后你项目里具体是什么场景,说说你在这个场景里消息队列是什么?而且面试官期望的回答是,你们公司有个xx业务场景,这个业务场景有个什么技术挑战,如果不用MQ可能会很麻烦,但是你现在用了MQ之后带给了你很多的好处。MQ的使用场景解耦异步削锋凡事总有利弊之分的,不可能十全十美的。MQ的缺点:系统可用性降低想一下,如果加了MQ,数据的接收与消费都需经过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执行失败了,就导致整个请求给用户返回是成功的,但是后台逻辑实际上是没有完全执行完的。
本文地址:https://blog.csdn.net/weixin_43771998/article/details/110945533