Внедрение онлайн зала ожидания - PullRequest
6 голосов
/ 19 апреля 2010

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

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

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

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

Ответы [ 2 ]

7 голосов
/ 20 апреля 2010

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

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

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

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

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

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

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

2 голосов
/ 19 августа 2013

Может оказаться полезным Онлайн-руководство по организации билетов . Проверьте их хранилище на GitHub .

Интеграция с Ruby On Rails , PHP , .NET , iOS , Android и аналогичные платформы.

Очередь - позволяет получить контроль над перегрузкой веб-сайта во время экстремальных пиков трафика путем разгрузки конечных пользователей в онлайн-очередь.

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

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