题目描述
高并发下更新库存会有什么问题和使用状态实现幂等
题目来源及自己的思路
MIC老师在2019.8.31ROCKETMQ分布式事务时提到这个问题。正常情况下,库存是通过更新关系型数据库商品表的某条记录的库存就好了。那么在高并发下呢?会有什么问题?
那实现幂等呢?使用状态实现幂等是怎么实现的呢?
高并发下更新库存会有什么问题和使用状态实现幂等
MIC老师在2019.8.31ROCKETMQ分布式事务时提到这个问题。正常情况下,库存是通过更新关系型数据库商品表的某条记录的库存就好了。那么在高并发下呢?会有什么问题?
那实现幂等呢?使用状态实现幂等是怎么实现的呢?
不是高并发的问题,是分布式的问题
分布式环境下库存和订单可能是存放在2个不同数据库中的,中间会通过消息中间件来操作
从而导致无法在一个事务中操作,会发生下了订单后因为网络问题多次进行扣减库存的现象
这时就需要通过幂等来保证一次订单只扣减一次库存
用状态机的话就是在扣减库存时修改订单的状态(例如已扣库存),再次扣减库存的时候先查询订单状态,如果是一扣除库存的话就不在操作,从而保证数据一致