Что, существует так много видов шиповых систем!

Redis Go

предисловие

Структура этой статьи очень проста:

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: