Ограничить трафик
статические ресурсы
- Зачем вам CDN для статических ресурсов, или вам нужно потратить деньги, чтобы купить сервер, и вы должны его настроить, что за хлопоты
- С помощью CDN URL-адрес страницы seckill может быть привязан к доменному имени, и больше ничего настраивать не нужно.
интерфейс
- Шлюз всегда имеет функцию ограниченного потока: 80 % трафика будет напрямую возвращено в сообщение о сбое панической покупки по мере необходимости, а 20 % трафика будет входить в стратегию seckill в обычном режиме.
До сих пор большая часть трафика была разбавлена, а следующая вступает в обычную стратегию всплеска.
Пиковая стратегия
В этой статье используются одновременные блокировки, которые лучше поддерживают бизнес.
одновременная блокировка
- redis setnx
- Распределенная одновременная блокировка
Переменная
- limit - количество мгновенных убийств
- product - уникальная этикетка продукта
- project - уникальный тег проекта seckill
- book - таблица заказов, формируемая в реальном времени (uuid, статус)
- inervalBook - следить за таймером книги, обновлять книгу в режиме реального времени, через книгу можно посмотреть текущее количество заказов, и существует ли уже пользователь
- inervalOver - Следить за таймером книги и проверять в режиме реального времени все ли заказы в книге оплачены, в это время при достижении лимита ставится конечная метка и активность заканчивается.
- Если вам нужно обновлять инвентарь в режиме реального времени, вы можете установить таймер
интерфейс
- checkOrder - интерфейс заказа
- getOrderStatuss - интерфейс запроса заказа, этот интерфейс должен возвращать соответствующий список статуса заказа в соответствии со списком uuid, чтобы обновлять книгу в режиме реального времени.
Процесс
Недостаточно одновременных блокировок в Redis
Суммировать
Как правило, платежное поручение действует в течение 15 минут. Если пользователь не заплатит в течение 15 минут или не заплатит до истечения срока, запас будет потрачен впустую; если запас заполнен, но фактический объем покупки не заполнен, при условии мы оговариваем, что новый Если пользователь пойдет захватить его и вернет сообщение «схватил все», то пользователь не захватит его, поэтому квота будет потрачена впустую; если мы оговорим возврат «пожалуйста, продолжайте захват», то пользователь будет продолжать захват в течение 15 минут, и опыт очень плохой.
В ответ на вышеуказанные проблемы мы можем соответствующим образом расширить инвентарь в соответствии с нашим опытом.Например, если мы ожидаем убить 100 юнитов в секунду, то инвентарь можно увеличить до 105. Таким образом, когда генерируются 105 заказов , мы можем напрямую вернуться к «вырвать все», чтобы убедиться, что некоторые заказы клиентов недействительны. , тем не менее достигнут ожидаемый объем продаж.