专业的编程技术博客社区

网站首页 > 博客文章 正文

秒杀系统方案(秒杀系统如何设计)

baijin 2024-10-01 07:27:30 博客文章 10 ℃ 0 评论

秒杀场景:

  • 每个用户只能下单一次;
  • 每秒最多允许N个用户下单成功;
  • 不允许超卖;
  • 服务器不允许出现单点;
  • 用户下单成功,规定的时候内没有付款,需要修改商品状态与库存;
  • 秒杀成功与失败页面有提示信息;

几个关于秒杀系统中Redis的常见问题:

1.什么时候把库存写入到Redis?

秒杀活动创建/维护时写入Redis。

2.如何保证活动数据库和库存数据一致?

可以使用消息队列,使用消费队列的ACK机制,确保消息投递成功;

3.下单减库存还是支付减库存?

下单的时候减去库存,然后将下单的消息写入延时队列; 使用消费方法监听延时队列的消息,消费者判断当前订单状态是否已经被支付,如果支付成功则不进行业务的处理;如果当前订单没有被支付,需要修改将库存+1,并修改对应的商品状态即可。

4.如何防止商品被超卖?

把库存数据放入到缓存中,利用缓存的原子特性保证同时只有一个线程操作库存。

5.库存写回数据库的时机?

使用消费队列的方式进行数据同步,如果消息被消费了,数据库的库存即更新了。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表