库存领域核心能力--库存预占 建设实践

原文约3300字,阅读约需8分钟。发表于:

消费者拍下商品订单后,库存系统先为该订单预留库存,这个预留库存的动作被称为库存预占。在系统中,库存预占主要是对库存数据进行扣减操作。例:假如一个商品有5个可用库存,订单购买了1个此商品,库存系统需要把可用库存的数量由5扣减为4库存预占属于物流核心流程。如果预占能力出问题,可能会导致商品无法正常售卖或者出现超卖。

本文总结了在库存领域建设库存预占能力时遇到的问题以及解决方案。主要包括性能挑战、线程同步问题、死锁问题和数据一致性问题。针对性能挑战,提出了异步限流、商品库存横向拆分和使用缓存抗写流量等解决方案。对于线程同步问题,利用mysql事务和行锁机制来避免数据混乱。针对死锁问题,提出了锁排序的方法来保持线程顺序执行。对于数据一致性问题,通过锁定db库存和redis事务来保障数据一致性,并使用多次比对来判断数据是否一致。

相关推荐 去reddit讨论