rabbitmq实现秒杀中订单流量削峰

前言

在Redis秒杀功能设计与实现一篇中,我们使用redis实现了商品的秒杀抢购功能,在当前的设计中,只涉及到商品抢购,即用户锁定名额,并将成功抢购到的用户信息保存到redis中了

但是一个完整的抢购流程在业务流程中看到,包括锁定名额和下单,在超卖问题分析这篇中,我们是将抢购与订单放在一起进行的

仔细分析这样的做法,在高并发的抢购环境下,这样做是欠妥的,因为使用了分布式锁,尽管时间很短,但分布式锁的存在仍然会耗费不少性能

而且从系统的整体设计层面中,在微服务架构中,如果像双11那样瞬时订单量特别大的情况下,上面的做法带来的影响就更大了

因此在高并发环境下,另一个比较成熟且为业界广泛使用的就是利用消息中间件,将抢购成功的消息推送至消息队列,订单作为一个单独的微服务来消费这些消息,完成下单的操作

这样做的好处是显而易见的,消息队列可以堆积大量的订单消息,抢购的服务只需要将抢购成功的消息推送至消息队列即可,剩下的由订单微服务去处理

同时,实际环境中,如果发现消息队列的消息堆积过大,单个订单微服务消费能力达到瓶颈的时候&#

你可能感兴趣的:(rabbitmq实现流量削峰,mq实现订单流量削峰)