高并发场景库存处理方案

场景:

  • https://juejin.cn/post/6844904030158716941#comment

  • https://juejin.cn/post/6844903719318847495

  • 停车位区域剩余车位数量更新,当有车辆进入停车区域,需要更新剩余停车位数量。

  • 商品库存,高并发更新的情况下,

    • 如果是直接做数量扣除,直接通过排他锁更新,将导致数据库压力极大甚至宕机,所以一般会有以下方案:
      • 将库存数量加入缓存,在缓存中操作,比如利用redis的单线程特性。
      • 采用分布式锁,将加锁环节提前到业务系统,降低数据库的压力,但是单纯的分布式锁还是会导致性能低下,优化的话可以考虑采用分段锁,将库存等分成多份,对每份都进行加锁处理。
    • 如果是先读后修改,再更新的情况,并发下则会导致数据被覆盖,出现超卖情况。