为什么使用消息队列?引入MQ有什么优势?
我相信消息队列(MQ)对于Java程序员来说应该都不陌生,如果感到陌生,可能你接触的项目都比较小,传统项目没有拆分服务,当业务越来越多的时候就会拆分多个微服务,让我们先来看一个业务场景。
以我们公司APP用户下单为例,用户请求首先到达订单服务,然后去库存服务扣减库存成功之后,通知商户执行业务,再去优惠券系统结算优惠券,然后去积分系统结算积分。
假设每个微服务接口的响应时间是 200ms,那么这几个服务调用就要 600ms 的时间,加上订单服务自己的业务处理时间 200ms,整个提交订单接口就是将近 1s 的响应时间。如果后续随着业务发展再接入其他系统,这个时间久越来越长。一个接口一秒钟响应,这个吞吐量是非常低的。当系统的QPS稍微高一些,服务器资源就不够用了,当资源不够用的时候,后来的用户请求就会等待服务器释放资源处理,用户就会觉得卡。用户一旦觉得卡,就很可能会回退页面刷新,或者再次点击提交订单,然后请求又过来,又访问数据库,就会更卡。系统最后可能就瘫痪了。
仔细思考一下会发现,其实商户业务、优惠券业务、积分业务这几个操作是可以并行执行的,没必要串行一个个去请求。如果这几个并行就能节省掉很多时间,所以我们可以考虑使用 MQ。
引入 MQ
在引入MQ之前,我们需要了解MQ的模型,MQ作为消息中间件,用于连接两端微服务
还没有评论,来说两句吧...