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

秒杀:接口优化

作者: 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访问

相关文章

  • 秒杀接口优化

    秒杀接口优化 1. 系统初始化,把商品库存数量加载到Redis MiaoshaController实现Initia...

  • 秒杀:接口优化

    Redis预减库存减少数据库访问 内存标记减少Redis访问 请求先入队缓冲,异步下单,增强用户体验 Rabbit...

  • 3. 秒杀-接口优化

    1.解决超卖和重复秒杀 秒杀动作执行的操作比较多,多线程场景下,将会出现超卖和重复秒杀的情况,这属于异常情况,必须...

  • redis实现秒杀

    秒杀活动内容实现简单的秒杀页面(显示当前秒杀活动状态)和秒杀接口,不需要考虑下订单和退货流程。秒杀接口要求时间到了...

  • SSM实现高并发秒杀功能之DAO层

    一、该秒杀实现哪些功能 1.列出秒杀的商品2.秒杀接口的暴露(到了秒杀的时间,把秒杀的地址暴露出来)3.执行秒杀4...

  • 秒杀系统架构优化思路

    《秒杀系统架构优化思路》 上周参加Qcon,有个兄弟分享秒杀系统的优化,其观点有些赞同,大部分观点却并不同意,结合...

  • Java高并发秒杀业务Api-Service层构建过程

    章节目录 秒杀Service 接口开发工作秒杀业务逻辑编写spring-IOC 管理 service 组件cont...

  • LR-并发下检查功能结果

    这是个秒杀的接口,我需要测试: 1、并发情况下,接口返回结果是否都正确 2、并发情况下,秒杀数据正确性 ok() ...

  • 数据库主键更新死锁问题

    记一次压测数据死锁问题:并发场景为秒杀减库存的场景,使用Jmeter并发调用秒杀接口,秒杀使用数据库乐观锁,主键更...

  • 作业

    请用接口隔离原则优化cache类的设计,画出优化后的类图 接口隔离:

网友评论

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

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