Administrator
发布于 2024-08-10 / 23 阅读
0
0

抽奖秒杀流程

1. 流程图

2. 详细设计

抽奖前流程:

库存预热,即将MySQL中的库存信息(抽奖次数)存入Redis中

抽奖中流程:

  1. 对Redis中的key进行decr(减一)操作,返回一个结果stock

  2. 如果stock < 0,则说明库存不足,直接回滚,抽奖失败

  3. 如果stock >= 0,则进行后续加锁步骤

  4. 以活动编号+库存编号的方式加分布式锁(这一步本质上是一个兜底操作,假设一个库存总量为100,Redis扣减到了98,但是因为某些原因,比如网络抖动等,Redis中的数据又变成了100,这时候如果没有这步加锁操作,就会导致超卖)

  5. 如果获取锁失败,则抽奖失败

  6. 如果获取锁成功,则向MQ发送延迟消息,异步更新数据库实现最终一致性


评论