我正在试图找出电影票预订系统的有效方法。我关注的主要方面是用户处理并发预订,即两个或更多用户试图在给定时间内预订相同的座位。
我在网上经历的许多解决方案建议通过同步处理并发,即使其他用户可以看到事务(类似于java中的同步方法/块)。
我的感觉是,上述方法可能不是一个可扩展的解决方案,因为如果请求数量增加到一百万/秒。我们不能指望这些交易是逐个线性的。它会注入很多延迟。
我的方法之一是保持座位状态,如
EMPTY
IN_PROGRESS
BOOKED
点击付款按钮后,状态将从EMPTY更改为IN_PROGRESS。所以其他用户选择相同的座位并点击付款按钮,可以对座位状态进行检查,如果IN_PROGRESS则可以显示合适的消息。
如果已完成付款的用户,如果座位成功状态更改为BOOKED,则失败状态将更改为EMPTY。
请告诉我,我的方法是否有任何问题,或者是否有任何有效的方法来处理座位预订中的并发性。谢谢