秒杀

Posted by 龙行秀的博客 on January 13, 2020

秒杀系统设计和实战(附代码和注释说明)

一、 秒杀环境组成

1.1 方案整体框架图

学习之前,先学习秒杀系统设计原理图

image-20200116211407779

二、 本教程使用说明

2.1 swagger访问地址

http://127.0.0.1:9090/swagger-ui.html

2.2 简略秒杀页面地址

http://127.0.0.1:9090/views/index.html

页面地址URL配置如下

image-20200115213548905

image-20200115211555167

2.3 所有接口列表

image-20200115211442333

2.4 实体参数说明

openId 用户ID,可以非数字 String
purchaseNum 购买数量,必须数字 Integer
formId   String
addressId 地址,必须数字 Long
     
     

2.5 Redis相关数据说明

image-20200116212243787

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中库存数量

image-20200116200032907

三、主要 源码和相关技术说明

3.1 Guava 限流器功能和原理说明

3.2 统一日志处理功能和原理说明

附 完整Github源码地址

附 参考文献