Реализация приемной онлайн

Моя организация создает новую версию нашего сайта покупки билетов и ищет лучший способ создать приемную онлайн, когда число пользователей в нашем пути покупки превышает определенный предел. Лучшая версия этой очереди впустила бы новых пользователей после того, как существующие пользователи или завершили свою покупку или превысили предел тайм-аута после ввода пути.

Я пытаюсь понять то, как это было реализовано другими организациями. Кто-либо там сделал что-то подобное или имеет опыт с этим? У нас есть некоторые идеи, но я хотел бы получить смысл того, какие решения попробовали и с какими проблемами те решения столкнулись.

Только, чтобы быть завершенным, этот сайт создается в Ruby on Rails, хотя я хотел бы услышать о том, как люди решили это независимо от платформы.

Править: Разъясниться: потребность в очереди не состоит в том, чтобы, прежде всего, уменьшить загрузку, но ограничить скорость, на которой сеть покупает билеты относительно людей, покупающих другими способами, как по телефону.

6
задан saalon 20 April 2010 в 20:03
поделиться

1 ответ

Прежде чем я обрисую один метод для этого, я хочу указать, что то, что вы хотите сделать, не имеет большого смысла. Сервисы в Интернете не похожи на обычный магазин, где я могу подойти, увидеть, что он переполнен, и решить, остаться или нет. Мне кажется, что создание очереди на вашем сайте перекладывает вину с вас (неспособность или нежелание адекватно предоставлять ресурсы) на меня (наказание меня за попытку использовать ваш сайт).

Если вы продаете что-то вроде билетов на шоу, где количество ограничено и каждый предмет привязан к месту, я думаю, что лучше зарезервировать предметы и отсрочить эти бронирования, если они не оплачены своевременно. Ticketmaster делает это, и я думаю, что это гораздо лучшее решение, чем блокировать людей у ​​дверей.

Если вы все же хотите пойти по этому пути, я бы спроектировал систему следующим образом:

Когда клиенты приходят на ваш сайт, запишите время их прибытия. Когда они взаимодействуют с сайтом, запишите время «последнего посещения». «Последний раз видели» будет использоваться для определения активности. Вам понадобится очень часто выполняющееся фоновое задание, чтобы сеансы быстро заканчивались.

Как только ваш лимит исчерпан, у вас появляется упорядоченная очередь людей, которые заблокированы. Когда клиенты завершат свою транзакцию или истечет время ожидания, вы отметите следующего человека в очереди для входа в путь покупки.

Для пользователей, находящихся в очереди, их браузеры будут делать запросы на регулярной основе, проверяя, позволили ли вы им войти. Если да, они переходят к пути покупки. Если нет, они продолжают ждать.

На пути к покупке необходим механизм, который проверяет, не пытается ли кто-то обойти вашу зону ожидания, и отправляет их обратно.

7
ответ дан 10 December 2019 в 02:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: