предисловие
Структура этой статьи очень проста:
5 картинок дадут вам 5 видов систем seckill, плюс немного показательной работы, а потом несколько душевных слов 🤷♀️.
Простая система шипов
Принцип реализации:Сокращение запасов с помощью атомарных операций Redis
Рисунок 1
преимущество | недостаток |
---|---|
Простой и удобный в использовании | Протестируйте возможности сервиса Redis |
Это справедливо |
---|
справедливый |
первым прибыл - первым обслужен Эквивалент в русском языке: поздний гость гложет и кость |
Мы называем этот тип шиповой системой:
Простая система шипов
Если QPS в начале невысок, а Redis полностью устойчив к ситуации, можно полностью положиться на эту «простую систему спайков».
Достаточная система шипов
Принцип реализации:Алгоритм ограничения тока служебной памяти + атомарная операция redis для уменьшения запасов
Рисунок II
преимущество | недостаток |
---|---|
Простой и удобный в использовании | - |
Это справедливо |
---|
не очень честно |
Относительный первый пришел первый обслужен |
Мы называем этот тип шиповой системой:
Достаточно секилл системы
Шиповая система с лучшей производительностью
Принцип реализации:Атомарная операция обслуживания локальной памяти минус инвентаризация
Как появился инвентарь, обслуживающий локальную память?
Инвентарь каждой машины выделяется и передается на машину до начала события.
Рисунок 3
преимущество | недостаток |
---|---|
высокая производительность | Динамическое масштабирование не поддерживается (во время события), так как инвентарь распределяется до начала события. |
сбросить давление redis | - |
Это справедливо |
---|
не очень честно |
не абсолютно первый пришел первый обслужен |
Мы называем этот тип шиповой системой:
Система увеличения резервных запасов
Шиповая система, поддерживающая динамическое масштабирование
Принцип реализации:Сервисная локальная сопрограммаАтомарная операция redis по времени для уменьшения частичной инвентаризацииВ локальную память + обслуживание атомарной операции в локальной памяти минус инвентаризация
Рисунок 4
преимущество | недостаток |
---|---|
высокая производительность | - |
сбросить давление redis | - |
Поддержка динамического масштабирования (во время мероприятия) | - |
универсальный | - |
Это справедливо |
---|
Не очень честно, но лучше |
почти первый пришел первый обслужен |
Мы называем этот тип шиповой системой:
Инвентаризация инвентаризации в реальном времени
Справедливая система шипов
Принцип реализации:Обслуживание локальных горутинРаспродана ли синхронизация времениВ локальную память + очередь + очередь для успешных результатов опроса (или активной отправки)
Рисунок 5
преимущество | недостаток |
---|---|
высокая производительность | Высокая стоимость разработки (необходимо активно уведомлять или опрашивать результаты постановки в очередь) |
очень честно | - |
универсальный | - |
Это справедливо |
---|
справедливо |
абсолютный первый пришел первый обслужен |
Мы называем этот тип шиповой системой:
Справедливая система пиковой очереди
Сан-операция
Разве приведенная выше система seckill не идеальна?
Ответ: Да.
Есть ли место для оптимизации?
Ответ: Статически получить интерфейс информации об активности seckill.
Что значит статический?
Ответ: Например, получение информации об активности seckill осуществляется через интерфейсhttps://seckill.skrshop.tech/v1/acticity/get
полученный. Теперь нам нужно пройтиhttps://static-api.skrshop.tech/seckill/v1/acticity/get
Получить этот интерфейс. какие отличия есть? смотреть вниз:
наименование услуги | интерфейс | Место хранения данных |
---|---|---|
Сервис Seckill | Sec kill Глубокое понимание Oh Pu Город титула Specialty/V1/AC… | Убить служебную память или Redis и т.д. |
Статическая служба интерфейса | static-API Глубокое понимание О Пу Специальность /Sec kill/V1/… | CDN, локальные файлы |
Прежде чем это будет так
стал таким
Результат: может пройти интерфейсhttps://static-api.skrshop.tech/seckill/v1/acticity/get
Получена информация об активности seckill, трафик выделен на CDN, а сам сервис seckill не имеет нагрузки по этой части.
Тихо прошепчу: «Я посмею запушить CDN после того, как убью результат 😏😏😏».
备注:
之后我们会分享`如何用Golang设计一个好用的「接口静态化服务」`。
Суммировать
Выше мы получаем следующие категории秒杀系统
Шиповая система |
---|
Простая система шипов |
Достаточно секилл системы |
Система увеличения резервных запасов |
Система увеличения резервных запасов в режиме реального времени |
Справедливая система пиковой очереди |
Я хочу сказать, что нет лучшего решения, и нет худшего решения, толькотебе идетиз.
брать先到先得
Например, обязательно следите за рекламой своих продуктов и не гонитесь за абсолютным принципом «первым пришел, первым обслужен». На самом деле, если вы посмотрите на все планы, то увидите, что они относительно первоочередные: например, если вы пришли захватить событие через час после его начала, вполне естественно, что пользователи, пришедшие вовремя не сможет схватить его, не так ли?
другой пример预备库存秒杀系统
, хотя динамическое масштабирование не поддерживается. Но если ваша среда соответствует любому из следующих условий, этого вполне достаточно.
- Время окончания сцены мгновенного убийства очень быстрое, обычно за несколько секунд, а реальная активность может происходить следующим образом:
- Сервисное давление высокое и еще не зависло: динамически масштабировать емкость уже поздно
- Давление службы слишком велико, и оно было приостановлено: вы можете сначала приостановить действие, запустить службу и завершить расширение, а затем выполнить повторную отправку с оставшимися запасами.
- Сам O&M не имеет возможности динамического масштабирования.
так:
Просто делайте это правильно и не переусердствуйте.
Наконец
На этот раз я раскрыла все свои старые книги и сильно запаниковала.
[Skr Shop] Нажмите и удерживайте адрес проекта, чтобы ввести:GitHub.com/payee-shop/лошадь…
Другие статьи из серии Skr Shop:
- SkrShop | Анализ спроса на дизайн корзины покупок
- SkrShop | Дизайн архитектуры корзины покупок
- SkrShop | Системный дизайн универсального лотерейного инструмента
- SkrShop | Анализ спроса на общие лотерейные инструменты
- SkrShop | кодер, спроектируете торговую систему (практическую)?
- SkrShop | кодер, вы будете разрабатывать торговую систему (концепцию)?
- SkrShop | Анализ процесса и сводка сторонних платежей
- SkrShop | Основная информация о продукте для руководства по дизайну электронной коммерции
- SkrShop | Руководство по проектированию пользовательской системы электронной коммерции