老师,有两个小问题:
(1)这个项目解决超卖的方法是利用redis的单线程,在并发访问的时候可以串行化的执行扣减库存操作,另外通过库存售罄标志可以保证不超卖。仅仅这样就可以防止超卖了是吗?
业界解决超卖的方式主要都有哪些呢?
(2)超时释放时redis的状态:在利用mq异步扣减mysql的过程中,假设createOrder操作长时间不返回,或者程序死了,也就是程序用于不能走到回滚或者提交,则库存流水可能永远都是1,则checkLocalTranscation的操作永远都是unknow,需要有一个超时释放操作,例如当下单操作触发15分钟以上,用户还是没有收到一个明确的指示,则后台要有一个程序,将这个操作回滚释放掉,回补redis数量。是这样的思路吗?可是这个时候如何判断redis是否已经成功扣减过了?有没有可能redis没有扣减成功,并且长时间没有返回。也就是后台程序需要额外判断一下当前redis是否扣减过了是吗?不知道我理解的对不对
谢谢老师~辛苦了