栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

商品秒杀优化流程总结

商品秒杀优化流程总结

整个秒杀的业务步骤

  1. 前端传递userId和goodsId参数,以及请求头的token

  2. 验证请求头token的合法化, 参数由@Valid验证

  3. 判断库存是否为空

  4. 判断是否重复抢购

  5. 调用service,执行秒杀过程

    1. 减少库存,sql语句要stock>0

    2. 生成秒杀订单和订单详情

    3. 将goodsId作为key, userId作为value 存入redis里的Set中,方便判断重复抢购问题

    初步优化 ps: 主要目的:减少和数据库的交互(redis), 将生成订单和秒杀解耦(rabbitMQ)

  1. 判断合法化

  1. 通过redis里的数据,判断是否重复抢购

  2. 判断redis里的存库是否大于0 (Controller 实现 InitializingBean,初始化时放入库存)

  3. 调用service,执行秒杀过程

    1. 通过redis里提前存好的数据,来预减库存

    2. 将消息发送给rabbitMQ,异步生成订单.

    3. 将goodsId作为key, userId作为value 存入redis里的Set中,方便判断重复抢购问题

最终优化结果   ps:减少和redis的通信,使用lua脚本,增强高并发的安全性

  1. 验证内存标记stockmap是否为空

  2. 验证token和参数的合法化

  3. 验证redis的库存是否为空

  4. 验证redis是否重复购买

  5. 使用lua脚本预减redis库存

  6. 发送秒杀消息至RabbitMQ

    1. rabiitMQ消费者接受消息

    2. 判断消息合法性

    3. 调用Service层相关方法

      1. service层中生成订单,

      2. service层中减少库存

      3. service层中将userId 加入redis的Set goods:id

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/652358.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号