У нас есть приложение для веб-сайта, которое мы ожидаем получить невероятно высокий трафик в нескольких точках в течение года. В настоящее время у нас есть стороннее программное обеспечение для балансировки нагрузки, которое перенаправляет пользователей на страницу "удержание" во время периодов занятости, чтобы наши серверы веб-приложений не задыхались от количества входящих запросов.
В будущем мы хотели бы получить больше контроля над этим процессом и реализовать виртуальную очередь. Текущий балансировщик нагрузки не имеет функций очередей, а просто позволяет трафик на основе ограничения скорости. Это случайный случай и приносит удачу, когда вы обновляете страницу (или получаете автоматическое обновление).
Я немного читал об этом в Интернете, но нашел небольшую информацию о реализации самой простой виртуальной очереди HTTP-запросов. Конечно, компании предлагают это как полноценное обслуживание, такое как queue-it и Netprecept но они кажутся излишними для наших текущих потребностей (и стоят очень дорого).
Входящее веб-приложение написано в ASP.Net MVC. Принимая во внимание, что в настоящий момент нам не нужны расширенные функции, такие как "приоритет очереди" и т.д., Я создал очень базовое доказательство концепции, используя статический класс менеджера очереди, используя ConcurrentQueue<T>
и т.д., Но мне интересно, это допустимый, масштабируемый подход? Это что-то, что может быть частью основного уровня приложения? Или он должен храниться отдельно? Есть ли у кого-нибудь технические ноу-хау о том, как реализовать эту функцию в приложении ASP.Net MVC?
EDIT: спасибо за ответы до сих пор. Большинство ответов, похоже, содержат много подробностей о кешировании. Это уже (очень) сильно используется на нашем веб-сайте, используя веб-кэширование ASP.Net, кэширование полных запросов страниц на уровне балансировки нагрузки и кэширование объектов с помощью AppFabric.
Причина возможности управления очередью заключается в том, что процесс очень тяжелый для записи в базу данных. Мы эффективно создаем заказы на определенный продукт через веб-сайт. Это означает, что эти транзакции БД учитывают такие вещи, как проверка акций на прошлой неделе и т.д. Именно здесь возникают проблемы с производительностью, и это является причиной желания реализовать какую-либо систему очередей.
Бросить больше ресурсов на сервер базы данных не является реалистичным вариантом. Я действительно ищу подробности технических реализаций системы массового обслуживания такого рода (С# или иначе). Извините, если изначально не было ясно.