主要是:解耦、异步、削峰。
(1) 解耦: 例如,生产系统A系统发送数据到B,C,D三个系统中,通过调用接口发送。如果E系统也需要这个消息呢?那如果C系统不需要这个消息了呢?A系统与其他的系统产生严重的耦合。如果使用MQ,A系统产生一条数据,发送到MQ中,哪个系统需要数据自己到MQ里面去消费。如果新系统需要数据直接从MQ里面消费即可;当某个系统不需要这条数据了,就取消读数据的消费即可。这样下来的话A系统压根不需要考虑要给谁发送数据,不需要维护这个代码,也不需要考虑其他系统是否调用成功,失败超时等情况。所以也不需要 直接同步调用接口的,因为MQ直接将它给异步解耦了。
没有使用MQ:

使用MQ之后:

(2)异步:A系统接收到一个请求,需要在自己的本地写库,还需要在B,C,D三个系统中写库,B,C,D三个系统写库完毕返回给用户。最终的请求总延时是A+B+C+D的时间,时间过长,导致用户体验不好。如果使用MQ,那么A系统直接发送3条消息到MQ消息队列中,那么A系统返回给用户的数据是A+MQ消耗2的时间,其他系统需要消费到MQ中进行再将数据写入到本地的库中。大大提升了用户的体验。
我们先看一下同步请求的弊端如下图所示

下面我们看一下使用MQ之后的示例图:

(3)削峰:减少高峰期对服务器的冲击压力。

本文探讨了MQ(消息队列)在微服务架构中的关键作用,包括解耦服务间依赖,实现异步处理提升用户体验,以及在高并发场景下削峰填谷,减轻服务器压力。MQ的应用有效促进了系统的稳定性和响应速度。
4813

被折叠的 条评论
为什么被折叠?



