电商高并发库存(高频写)系统设计注意事项

查询商品库存设计:类似于商品查询系统,详细见前文。本文主要为避免库存超买超卖需要注意的事项

1.启用缓存,查询库存(读缓存),查不到则查询数据库,判断可以扣减库存,更新数据库并更新缓存

2.防止超买超卖,sql中where语句加上前值(不能预防aba问题,且一旦库存缓存与数据库不一致就无法扣减库存),添加库存版本字段(性能有影响)

3.上述防止超买超卖利用了数据库乐观锁的概念,性能并不好,且不友好,高并发场景下大量库存扣减失败并击穿到数据库,使用分布式锁提高性能

4.加分布式写锁后进行库存扣减防止超买超卖

5.对于同一个商品整体加锁,相当于对于同一个商品的库存修改,串行化,对于高并发秒杀场景依旧有性能问题。

6.库存扣减方案不再依赖数据库,做库存预热,提前扣减。秒杀场景提前扣减库存,并在redis中,设置秒杀商品库存。

7.引入hotkeys机制,检测到热点商品,提前扣减库存到redis中,热点商品只走缓存,不再走数据库。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值