虽然有文章说商业世界不会发生竞争条件,这是我们需要寻找的解决方案,但我不确定情况是否如此。
我需要容量并进行活动票务。当对事件的需求很高时,会在同一微秒内出现许多并发的预订命令。执行此操作的传统方法是使用锁定来防止出现 RACE 条件。否则,它最终会出售不可用座位的门票,这是严格的商业禁忌。
下表显示了同时发生的步骤顺序。
时间 | 总容量 | 消费 | 可用 | 客户1 | 客户2
1 | 100 | 99 | 1 |seat available?| -
2 | | | | apply | seat available ?
3 | | | | event handle | apply
4 | | 100 | 0 | update state | event handle
5 | | 101 | -1 | | update state