如何防止预订系统中同时用户更新的竞争条件?

时间:2016-08-04 19:08:37

标签: database concurrency locking acid

我在接受采访时被问到以下情况:

  1. User1查看电影的空座位。
  2. User2还会查看电影的空座位。
  3. 选择相同的座位'并点击提交。
  4. 1,什么机制会阻止同一资源被分配给两者?

    我回答说,我们将检查应用服务器上每个请求的时间戳。 他说,如果负载均衡器将请求重定向到不同的应用服务器会怎样?

    1. 还问我是否可以对DB-layer做任何事情以防止这种情况发生?我在交易和ACID方面表现不佳,但与此有关吗?请解释一下?

1 个答案:

答案 0 :(得分:1)

只执行完整性规则,即两个不同的人不能同时占用同一个席位。这应该只是声明关键{剧院#,座位#}(没有给定架构很难说)。试图获得座位的第二个用户将收到一条错误消息,指出“座位不可用”。可以明确而礼貌地解释这可能是由于其他人试图这样做。