2016-08-04 3 views
0

меня спросили в интервью следующий сценарий:Как предотвратить состояние гонки одновременных обновлений пользователей в системе бронирования?

  1. User1 смотрит на пустые места для фильма.
  2. User2 также смотрит на свободные места для фильма.
  3. Оба выбирают «то же место» и попадают в submit.

1, Какие механизмы препятствовали бы распределению одного и того же ресурса для обоих?

Я ответил, мы проверим временную метку каждого запроса на сервере приложений. Он сказал, что, если load-balancer будет перенаправлять запросы на разные серверы приложений?

  1. Также спросил, могу ли я что-нибудь сделать на DB-layer, чтобы предотвратить это? Я слабый от транзакций и ACID, но разве это связано с этим? Пожалуйста, объясни ?

ответ

1

Просто соблюдайте правило целостности, которое одно и то же место не может выполнять двумя отдельными лицами одновременно. Это должно быть просто объявлением ключа {театр #, место #} (трудно сказать без данной схемы). Второй пользователь, пытающийся получить место, получит сообщение об ошибке «Недоступно место». Это можно объяснить явным и вежливым, что это может быть связано с тем, что другие люди пытаются сделать то же самое.

Смежные вопросы