可靠事件队列缺乏隔离性,为什么会导致超售?
DongJianquan opened this issue · comments
DongJianquan commented
在分布式事务TCC小节中提到可靠事件队列的缺点时有下面一句话:
"譬如在本章的场景事例中,缺乏隔离性会带来的一个显而易见的问题便是‘超售‘:完全有可能两个客户在短时间内都成功购买了同一件商品,而且他们各自购买的数量都不超过目前的库存,但他们购买的数量之和却超过了库存。"。
我对”可靠事件队列缺乏隔离性而导致超售“有些疑问,希望有人可以帮忙解答,我的想法如下:
- 在可靠事件队列的场景中扣减货款的时候并不会检查库存,如果扣减货款成功,但是库存并不足,可靠消息队列又不可以再进行失败回滚,这种情况是超售吗?可是导致这种情况出现不是因为缺乏隔离性吧。
- 对于仓库服务本身来说,扣减库存操作不是在一个本地事务进行的吗?如果是在一个本地事务中,那不就可以通过加锁的操作避免超卖吗?是因为多个每个仓库服务节点都使用不同的数据库,而没有办法保证强一致性吗?