魅族秒杀活动优化

秒杀活动优化点

  1. 优化缓存设计以减少交互次数

    例如:使用hmget一次性读取需要的数据;将相关数据打包在一起可以通过单个key访问返回

  2. 针对秒杀活动指定业务状态枚举来表示正常逻辑错误

    减少使用异常控制逻辑分支.(找不到子活动,活动没开始,活动结束,用户参与过)这些状态,可以直接用状态枚举返回.

  3. 某些业务逻辑不相关的操作可以异步处理

    • 记录活动监控数据这些,异步处理失败也不会影响正常业务,监控数据误差不大也不影响;
    • 异步在缓存中标记用户已中奖,标记失败仅仅会使用户多访问一次数据库.
    • 扣除库存以外的其他操作,例如发券,扣除库存成功后可以直接提示用户已中奖(抢购成功),稍后在个人中心查看.然后异步处理奖品(商品)发放.
  4. 使用异步排队机制,控制对数据库的并发操作.

    将秒杀参与接口拆分成两个.

    • 提交参与请求,可能直接返回结果,也可能返回事务id表示处理进入队列,结果需要异步查询.
    • 根据事务id查询处理结果.需要隔断时间周期调用.超过约定时间视为处理失败.

Redis存储数据结构

  1. 用户入队标记(参与和结果)
  2. 活动信息(起止时间,库存标记)—保存为hash,以便于可以使用hmget一次读取.

秒杀程序处理流程

用户秒杀操作入队

用户秒杀操作入队

异步扣除库存

异步扣除库存

异步配发奖品

异步派发奖品

猜你喜欢

转载自blog.csdn.net/u012631045/article/details/81481026