INTEGRITY Документация

Обзор

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

Схема обработки запроса Waiting Room: как Cloudflare обрабатывает запрос и помещает его в зал ожидания перед тем, как он попадает на исходный сайт

Путь пользователя

После того как вы создали и активировали зал ожидания для конкретной страницы приложения:

Архитектура

Waiting Room построен на Workers который работает на глобальной сети дата-центров Cloudflare.

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

Это решение, в свою очередь, зависит от двух факторов: пороговые значения, заданные администратором и состояние Waiting Room.

Для пороговых значений, заданных администратором, важны два показателя: total active users и new users per minute:

Резкий всплеск любого из этих значений может привести к постановке в очередь. Ещё один параметр, влияющий на то, как мы рассчитываем the total active users это session duration. Пользователь считается активным в течение session duration минут с момента запроса к любой странице, охваченной Waiting Room.

Второй фактор: состояние Waiting Room, которое поддерживается на уровне локального дата-центра и при этом постоянно меняется в зависимости от трафика по всему миру. Каждый дата-центр работает со своим собственным состоянием Waiting Room. Это состояние представляет собой снимок картины трафика сайта по всему миру, актуальный на данный момент времени. Преимущество такого подхода, то есть принятия решений на уровне Worker, в том, что решения принимаются без существенной задержки для запроса. Алгоритм Waiting Room динамически выделяет каждому Worker определённое количество доступных слотов на основе состояния Waiting Room. Постановка в очередь начинается, когда слоты в рамках Worker заканчиваются. Отсутствие дополнительной задержки позволяет клиентам держать зал ожидания включённым постоянно, не беспокоясь о дополнительной задержке для своих пользователей.

Состояние Waiting Room обновляется глобальной информацией каждые несколько секунд. У нас настроен конвейер в Cloudflare Durable Objects который обеспечивает распространение изменений трафика по всему миру. Такая архитектура гарантирует, что мы не добавляем задержек и принимаем решения максимально близко к реальному времени.

Более подробную информацию об архитектуре и причинах принятых решений см. в нашем подробный технический блог ↗.