问题探讨

# 问题探讨 ## 秒杀之前需要预扣减库存吗? > 我觉得没有必要, 因为当我们秒杀成功的时候, 我们会发送消息, 然后监听器处理, 生成订单等, **当生成完订单后, 我们可以完全仿照之前的逻辑, 先锁定库存, 然后发送消息自动解锁库存, 自动取消订单, 跳转支付页等逻辑, 不需要预扣减, 没必要** ## 特别注意 > **这里的订单取消了之后, 需要释放信号量!!!** ## 为什么秒杀的吞吐量这么高 > 分析代码: 发送请求, 获取Redis里面的数据, 平均每个1ms, 发送消息平均1us(1微秒), 真个逻辑下来大致5ms, 假设有5000个线程, 1s内可以处理100w个请求, 真正实现百万并发, 如果加上集群, 效果更佳 > 真实情况肯定是大打折扣的, 10w并发是有可能的, 这样的系统已经非常逆天了, 非常的牛 ## 秒杀模块不需要集成RabbitMQ, 为什么? > **我这里秒杀微服务直接耦合了消息微服务, 我觉得是可取的, 因为发送消息的所需要的耗时极短, 微服务调用最多2ms, 换算下来, 发送消息最多占用3ms, 不会浪费太多的资源, 对于简化代码开发, 可取** > 如果压力过大, 可以熔断降级 > <font color="red">**补充一下, 发送消息平均使用1us左右, 对于微服务的压力几乎可以不计**</font>