Комментарии 7
Если стоит задача ни в коем случае не допустить вход двух человек по копии билета даже в случае поломки системы, то никак не получится сделать систему, которая позволит одному человеку войти даже в случае поломки системы.
Единственный вариант как хоть как-то это сделать - это запускать пассажиров в пятиминутный отстойник и потом проверять билеты второй раз. Бред со всех сторон, но даёт системе 5 минут, чтобы синхронизироваться при плохой связи.
А так - либо связь нормальную делайте между вахтёрами и сервером, либо именные билеты по паспорту, с оригиналом паспорта.
Заведите очередь из ключей идемпотентности на валидаторе, чтобы контекст не стирался, когда человека попросили подождать и перешли к следующему, чтобы можно было вернуться к проверке билета не теряя контекст.
Можно добавить push уведомления, чтобы сервер отсылал статус, в случае если он не получил от клиента статус "получено".
Т.е. у посетителя проверили билет, связь затупила и ответ не пришел. Можно попросить постоять его в сторонке. В это время связь восстанавливается и на валидаторе приходит уведомление, что "Васю пропустить".
Мы рождены, чтоб байку про хакера с солонкой сделать былью!
Вот, даже не задумывался о том, что гейты пропуска это довольно интересная задача, которая упирается не только в сами по себе распределенные алгоритмы, для того, что бы эта система стала умной и децентрализованной, оказывается, нужно куда больше
А я вот не задумывался, что для реализации пропускной системы в кинотеатре кому-то может вштырить задействование интернета. Интранет - никак? Что контролёр делает в подвале, где связь - отстой?
Что мешает подписывать запросы к серверу, чтобы переспросить сервак в случае непоняток: "эй, ты там чо ответил-то на мой _этот конкретный_ запрос"?

Как поход в кино превратился в сессию системного дизайна