当前位置:   article > 正文

秒杀模块面试题

秒杀模块面试题

一、秒杀需要考虑什么问题?

秒杀业务的根本在于应用缓存提高并发量,减少数据库访问。使用mq缓冲将大流量数据进行削峰填谷,另外注意接口的防刷限流,还有就是如何解决超卖问题。

**并发的根源在于数据库,通常采用缓存+队列的方式减少数据库访问,降低访问速度。**可以采用redis+mq的方式实现。

1. 数据库的设计

  • 秒杀业务的商品和订单单独设表,不要和正常商品和商品订单混合一起。表格数据足够少,才能保证查询和写入速度

  • 订单表将用户id和商品id设置为唯一索引,这样能保证同一个用户不会购买两件相同的秒杀商品

  • 秒杀商品表商品库存更新语句添加>0条件,保证商品不会超卖。(我们项目中是在controller层就做了判断,如果库存已经小于0,那么我们直接拒绝请求,防止多余的压力打到数据库上面)

update miaosha_goods set stock_count = stock_count - 1 where goods_id = #{goodsId} and stock_count > 0
  • 1

2. 使用redis + JWT 建立分布式鉴权

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/635947
推荐阅读
相关标签
  

闽ICP备14008679号