秒杀系统设计和实战(附代码和注释说明)
一、 秒杀环境组成
1.1 方案整体框架图
学习之前,先学习秒杀系统设计原理图
二、 本教程使用说明
2.1 swagger访问地址
http://127.0.0.1:9090/swagger-ui.html
2.2 简略秒杀页面地址
http://127.0.0.1:9090/views/index.html
页面地址URL配置如下
2.3 所有接口列表
2.4 实体参数说明
openId | 用户ID,可以非数字 | String |
---|---|---|
purchaseNum | 购买数量,必须数字 | Integer |
formId | String | |
addressId | 地址,必须数字 | Long |
2.5 Redis相关数据说明
2.6 Redis在秒杀系统中的作用如下
Redis在秒杀系统中的作用如下:
序号 | 作用 | 命令 | KEY | VALUE | 超期时间 |
---|---|---|---|---|---|
1 | 分布式锁 | incrBy | BM_MARKET_SECKILL + 活动ID | – | 2秒 |
2 | 保存真实库存 | incrBy | BM_MARKET_SECKILL_REAL_STOCKNUM+活动ID | 真实库存数 | 无 |
3 | 保存库存数量 | BM_MARKET_SECKILL_STOCKNUM+活动ID | 库存数 | 无 | |
4 | 用户重复秒杀标识 | setExpire | BM_MARKET_SECKILL_LIMIT + 活动ID + 用户ID | true | 订单超期时间 |
5 | 订单是否处理标识 | set | BM_MARKET_LOCK_POLLING + 活动ID + 用户ID | true | 无 |
6 | 秒杀总次数 | incr原子 | BM_MARKET_SECKILL_COUNT + 活动ID | 原子操作 | 无 |
2.7 主要 接口功能说明
2.7.1 创建订单接口
2.7.2 获取库存接口
2.7.3 设置库存数量接口
作用:设置Redis中库存数量
2.7.4 查询指定活动编码库存个数接口
作用:查询Redis中库存数量