为什么使用消息队列?引入MQ有什么优势?

痛定思痛。 2024-03-23 17:12 161阅读 0赞

我相信消息队列(MQ)对于Java程序员来说应该都不陌生,如果感到陌生,可能你接触的项目都比较小,传统项目没有拆分服务,当业务越来越多的时候就会拆分多个微服务,让我们先来看一个业务场景。

以我们公司APP用户下单为例,用户请求首先到达订单服务,然后去库存服务扣减库存成功之后,通知商户执行业务,再去优惠券系统结算优惠券,然后去积分系统结算积分。

format_png

假设每个微服务接口的响应时间是 200ms,那么这几个服务调用就要 600ms 的时间,加上订单服务自己的业务处理时间 200ms,整个提交订单接口就是将近 1s 的响应时间。如果后续随着业务发展再接入其他系统,这个时间久越来越长。一个接口一秒钟响应,这个吞吐量是非常低的。当系统的QPS稍微高一些,服务器资源就不够用了,当资源不够用的时候,后来的用户请求就会等待服务器释放资源处理,用户就会觉得卡。用户一旦觉得卡,就很可能会回退页面刷新,或者再次点击提交订单,然后请求又过来,又访问数据库,就会更卡。系统最后可能就瘫痪了。

仔细思考一下会发现,其实商户业务、优惠券业务、积分业务这几个操作是可以并行执行的,没必要串行一个个去请求。如果这几个并行就能节省掉很多时间,所以我们可以考虑使用 MQ。

引入 MQ

在引入MQ之前,我们需要了解MQ的模型,MQ作为消息中间件,用于连接两端微服务

发表评论

表情:
评论列表 (有 0 条评论,161人围观)

还没有评论,来说两句吧...

相关阅读

    相关 消息队列MQ

    消息队列MQ 之前一直也没有学习过这方面的知识,直到项目中用到才决定学习一下 [https://www.jianshu.com/p/36a7775b04ec][htt