Привет, Руди, в этот раз мы собираемся провести мероприятие Давай вместе возьмем 100 купонов на 1000 юаней. Вы видите, как это сделать? Сейчас количество бронирований составляет около 2w человек. Я тру его, убиваю за секунды, мне приходится думать о том, как использовать имеющиеся у меня ресурсы для выполнения мгновенной обработки с высокой степенью параллелизма.
Камень других гор
- Сюй Ханьбинь: Масштабный параллелизм веб-систем — всплески и скачки электронной коммерции:Woohoo.CSDN.net/article/201…
- Анализ архитектуры системы Seckill и реальный бой:Блог woohoo.cn на.com/Andy-week/afraid…
- Практика разработки системы онлайн-покупок Xiaomi:Woohoo.CSDN.net/article/201…
- Как разработать Spike System:Вууху.Основное 51.net/article/108…
Особенности шипа
- Влияние на существующий бизнес веб-сайта
- Мгновенный высокий параллелизм, но количество шипов ограничено. Действительно действительные запросы ограничены. И вообще, горячих данных больше.
- Увеличение нагрузки на пропускную способность сети и сервера.
- Упрощение бизнес-логики
в общем
- быстрый
- Не может быть перепродан, сильная согласованность данных при высоком уровне параллелизма
- справедливость
- Масштабируемость: может выдерживать больший параллелизм за счет увеличения количества сервисов.
- Шунтирование: отсечение пиков на основе квантования времени
Решение
-
Справедливость:
- Механизм антищетки - ограничение количества посещений пользователей в течение n секунд,
- код верификации
- Синхронизация времени обратного отсчета и обратного отсчета
- Зомби-аккаунт против смахивания - система реального имени на стороне бизнеса
-
изолировать:
- Изоляция бизнеса: Система второго уничтожения — это краткосрочная обработка с высокой степенью параллелизма, чтобы предотвратить воздействие на другие обычные предприятия.Его следует развертывать независимо.
- Динамическая и статическая изоляция: Second-kill page максимально снижает свою зависимость от фона, большинство из них уходит в CDN, и лишь небольшое количество динамических данных запрашивает сервер.
-
Давление роста пропускной способности сети и сервера:
- Блокируйте как можно больше недействительных запросов как можно ближе к пользователю.
- Уменьшите возврат избыточных данных
-
Гарантия быстрого интерфейса убийства:
- Интерфейс seckill достаточно упрощен
- Асинхронная обработка сложной логики
- Блокируйте как можно больше недействительных запросов как можно ближе к пользователю.
- считывать кеш
-
Согласованность данных:
- Перехватывайте большое количество недопустимых запросов перед уровнем данных и обеспечивайте согласованность данных через промежуточные уровни данных, такие как redis/db.
-
Расширяемость:
- Многоуровневое кэширование: на каждом уровне кэшируйте как можно больше для перехвата недействительных запросов.
Вариант первый
Seckill System Design-Scheme 1.png
-
Преимущества и описание:
- Реализация относительно проста, и она может выполнять некоторые пиковые действия.
- Статические ресурсы внешнего интерфейса переходят в CDN
- Фронтенд перехватывает до и после seckill.Во время seckill каждый пользователь отправляет запрос на бэкэнд только один раз. Он может заблокировать 99% недействительных кликов начинающих пользователей.
- Используйте redis (setnx, incrby/decrby и другие атомарные операции), mysql (для обновления блокировки записи) для достижения резкого контроля запасов.
-
недостаток:
- Больше полагаться на Redis
- Пользователи Spike Filter Условие становится узким местом
- Деловая связь по-прежнему серьезна
Вариант 2
Дизайн-план системы Seckill 2.png
-
Преимущества и описание:
- Увеличьте локальный кеш одной машины, который может поддерживать параллельное расширение машины и сопротивляться большему количеству запросов.
- Добавьте mq, выполните асинхронную обработку, отделите сложную бизнес-логику
-
недостаток:
- Робот не ползает. Что делать, если я убиваю несколько продуктов?
- Есть ли понижения?
- Слой данных по-прежнему представляет собой одну точку
третье решение
.....
Динь-динь-динь, динь-динь-динь, Руди встал, обеденный перерыв закончился, вставай и двигай кирпичи...