你知道MQ的优点和缺点吗?

你知道MQ的优点和缺点吗?

今天,和大家分享一下MQ中的一些有趣场合,我会以图和对话的形式阐述出来。以下是个人学习的一些经验,如果你有更好的方案可以留言,一起探讨学习。

在这里插入图片描述
那么,到底为什么要使用MQ呢?它究竟有什么好处呢?

场景一、多系统间接口调用,程序耦合度高

在这里插入图片描述
A系统产生了一个关键数据,在B系统,C系统,D系统里都需要用到。

这时,E系统加入了,对A系统说,哥,你也调调我吧。A系统说好的,然后调了E系统。

然后B系统对A系统说,哥,我们有些功能改了,你把代码改改吧。A系统就很烦了,你的系统还要我来帮你改。

D系统一看,也坐不住了,哥,我不需要你的数据了,你别调用我了。A系统忍无可忍,最后还是忍住了。。

场景二、使用MQ解决程序耦合度高的场景
在这里插入图片描述
所有的关键数据,都在MQ中,所有需要该数据的系统只需要自己去MQ中取即可。

场景三、不用MQ同步高延时场景

在这里插入图片描述
用户发起请求访问A系统,A系统需要调用B系统,C系统,D系统的功能,每个系统响应请求都需要耗费大量的时间。对用户极度不友好。

场景四、使用MQ完成异步

在这里插入图片描述
用户发起请求访问A系统,A系统完成自己的业务操作后只需要发送消息到MQ之后就可完成响应,不必等待别的系统完成响应,解决了高延时的问题。

场景五、不用MQ的高峰期问题

在这里插入图片描述
在高峰期,用户请求量达到峰值,数据库承受不住压力会崩溃。

场景六、使用MQ来削峰
在这里插入图片描述
用户发起请求,A系统将请求全部发送到MQ中,mysql只需根据自己的能力,慢慢解决MQ中积压的数据即可。

MQ的缺点
那么,说完了MQ这么多的好处,它有什么缺点呢?

可用性低。这么多系统都在用MQ,那MQ挂了怎么办,那大家不就全挂了吗?

复杂性高。本来大家老老实实的调接口就好了,你现在多加了个MQ,我们还要考虑消息会不会丢失,消息发错了怎么办,消息重复发送了怎么办。

事务一致性问题。比如有一个请求,向A系统内添加数据,A系统让B、C、D三个系统添加数据,B、C两个系统添加成功了,但是D系统突然挂了,这时数据可能就成了非法数据了。

有什么问题可以在公众号里留言,也可以在我的博客里留言,看到了会一一回复。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值