美文网首页
秒杀:接口优化

秒杀:接口优化

作者: Aniwer | 来源:发表于2020-11-24 08:58 被阅读0次
    1. Redis预减库存减少数据库访问
    2. 内存标记减少Redis访问
    3. 请求先入队缓冲,异步下单,增强用户体验 RabbitMQ
    4. Nginx水平扩展
    5. 数据库分库分表,用于大型数据库的拆分 MyCat

    超卖问题

    1. 数据库加唯一索引:防止用户重复购买
    2. SQL加库存数量判断:防止库存变成负数

    秒杀接口优化

    思路:减少数据库访问

    1. 系统初始化,把商品库存数量加载到Redis
    2. 收到请求,Redis预减库存,库存不足,直接返回,否则进入3
    3. 请求入队,立即返回排队中 异步下单
    4. 请求出队,服务端生成订单写入缓存,减少库存
    5. 客户端收到排队中会轮询缓存,是否秒杀成功,
      第4、5步并发进行

    预减库存带来的问题

    //预减库存
            long stock = redisService.decr(GoodsKey.getMiaoShaGoodsStock, ""+goodsId);
            if (stock < 0){
                return Result.error(CodeMsg.MIAO_SHA_OVER);
            }
    

    当库存10,到11个请求时,stock-1,OK;到第12个请求就应该不需要进redis将stock-1了
    解决办法
    内存标记,减少redis访问

    相关文章

      网友评论

          本文标题:秒杀:接口优化

          本文链接:https://www.haomeiwen.com/subject/zhpvbktx.html