优惠券秒杀系统设计思路

 问题1:单机模式下的超卖问题

平价券表结构:

秒杀券表结构:

订单表结构:

基于Redis设计秒杀优惠卷功能:
前提:选择redis做全局ID生成器,是一种在分布式系统下用来生成全局唯一ID的工具。    唯一性 高可用 高性能 递增性 安全性
Redis 提供了 INCR 命令做自增,自增操作在分布式系统中如何保证一致性的问题。
定义为64位数字:为了增加 ID 的安全性,我们可以不直接使用 Redis 自增的数值,而是拼接一些其它信息: ID 组成部分:
* 符号位:1 bit,永远为 0 时间戳:31 bit,以秒为单位,可以使用 69 年 序列号:32 bit,秒内的计数器,支持每秒产生 2^32 个不同的 ID

UUID实现原理java代码:

设计业务逻辑:

1. 用户提交优惠券id
2. 根据优惠券id查询优惠券信息
3. 判断秒杀是否开始或结束,如果秒杀尚未开始或已经结束就直接返回错误信息
4. 判断库存是否充足,如果库存数量小于1就直接返回错误信息
5. 根据用户id和订单id查询订单,判断该用户是否下过单,如果下过单就直接返回错误信息
6. 扣减库存
7. 创建购买优惠券的订单
8. 扣减库存和创建订单逻辑原始代码,使用@Transactional注解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值