Skip to content

可靠事件队列缺乏隔离性,为什么会导致超售? #351

@DongJianquan

Description

@DongJianquan

分布式事务TCC小节中提到可靠事件队列的缺点时有下面一句话:
"譬如在本章的场景事例中,缺乏隔离性会带来的一个显而易见的问题便是‘超售‘:完全有可能两个客户在短时间内都成功购买了同一件商品,而且他们各自购买的数量都不超过目前的库存,但他们购买的数量之和却超过了库存。"。

我对”可靠事件队列缺乏隔离性而导致超售“有些疑问,希望有人可以帮忙解答,我的想法如下:

  1. 在可靠事件队列的场景中扣减货款的时候并不会检查库存,如果扣减货款成功,但是库存并不足,可靠消息队列又不可以再进行失败回滚,这种情况是超售吗?可是导致这种情况出现不是因为缺乏隔离性吧。
  2. 对于仓库服务本身来说,扣减库存操作不是在一个本地事务进行的吗?如果是在一个本地事务中,那不就可以通过加锁的操作避免超卖吗?是因为多个每个仓库服务节点都使用不同的数据库,而没有办法保证强一致性吗?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions