Я запрос секилла, бегу с планеты...

задняя часть
Я запрос секилла, бегу с планеты...

Знакомство с планетой

Местоположение: Галактика Бета-410,A-731电商星球.

Время: Новая Эра 2036.

Знакомство с планетой:

  • Китайское название: A-731 E-commerce Planet.

  • Иностранное название: ТЦ А-731

  • Категория: Планеты

  • Период революции: один год

  • Резидентный пользователь:

    • различные запросы
      • запрос заказа
      • запрос на возврат платежа
      • Заявки на доставку и т.д.
    • городской рабочий
      • Nginx рабочий
      • CDN-работник
      • Работники Redis и многое другое
  • Общая история планеты: 200 000 лет.

планетарный кризис

Я — запрос seckill, и моя повседневная работа — доставлять данные запроса seckill бэкэнд-воркерам.

Сегодня я столкнулся с запросом на сервере переадресации Nginx.Сяокун, я сказал Сяо Конгу, что неудобно сказать ему сейчас, что есть важные новости, а затем назначить встречу после окончания работы, и тогда мы все поспешили, потому что мы оба должны быстро доставить запрошенные данные на планету порядка .

Сяокун и я пошли в бар после работы в 10 вечера и заказали два напитка.mojito, нашел угол, чтобы сесть.

Сяокун: Похоже, в последнее время ты очень беспокоишься.

Я: Вы заметили, что количество заказов на нашей планете в последнее время резко увеличилось, и каждый день генерируется 10 миллионов заказов, и это не вопрос одного или двух дней.

Сяокун: Неудивительно, что я работаю сверхурочно до десяти часов каждый день, чтобы доставить запрошенные данные.

Я: У меня есть дядя, который работает в космическом агентстве и сказал мне, что наша планета не может нести столько данных запросов и заказов, и они скоро появятся.Большой взрыв.

Сяокун: Что же делать?

Я: Мы можем отправиться на планету Т-714 в 100 световых годах от нас, но только秒杀通道сидеть时空穿梭机на ту планету. И количество мест ограничено, я не знаю, смогу ли я сесть на шаттл.

Я: Завтра канал будет открыт дважды, в десять утра и в два часа дня. Ты поедешь со мной завтра!

Сяокун: Хорошо.

星球大爆炸

Задействованные точки знаний:

  • Что здесь подразумевается под Большим взрывом?
    • Из-за большого количества данных о заказе база данных не могла его поддерживать. База данных может быть недоступна.
    • Поскольку каждый день на сервер отправляется большое количество запросов, сервер не может их обработать. Сервер может быть недоступен.
  • Что значит, что канал seckill открывается два раза в день?
    • Движение в шахматном порядке, и распределите трафик по двум пиковым сеансам.
    • КонечноДвижение в шахматном порядкеТакже есть проверка ввода, добавление в корзину и другие операции по распределению трафика.

Спайковый канал

Расположение: аэропорт A-731 Планета.

Время: 09:45

通道

«Пожалуйста, подождите, пока запрашивающие пассажиры отправятся на планету T-714 к платформе Y1, чтобы отстоять очередь, чтобы войти в специальный проход, и начать входить в вестибюль шаттла через 15 минут». Трансляция в зале проигрывалась три раза подряд.

Я подошел к специальному каналу и увидел рядом с каналом табличку: канал Seckill, только для запросов Seckill.

Задействованные точки знаний:

  • Почему у сцены seckill был отдельный канал?
    • Чтобы не влиять на другие бизнесы системы, система second-kill развертывается отдельно для второго бизнеса.
    • обобщается какЕдиная ответственность службы + независимое развертывание

большой экран в реальном времени

Подняв голову, я увидел над проходом большой экран, на котором постоянно проигрывались фотографии планеты Т-714, а также информация о заказе билетов.

mark

Двое рабочих в форме патрулируют экран. На одном униформе напечатан Nginx, а на другом — CDN.

Nginx+CDN

Задействованные точки знаний:

  • Униформа Nginx:

    • Рабочие в униформе Nginx поддерживают статические и динамические ресурсы Nginx.
    • Страница сведений о продукте является статической страницей.Эти статические страницы хранятся на сервере Nginx.При доступе к статическим ресурсам запрос сначала направляется в Nginx, а затем сервер Nginx проверяет, является ли он статическим ресурсом, доступ к которому осуществляется через запрошенную URL-ссылку.
    • Страница сведений о продукте на большом экране не получается с внутреннего сервера путем отправки запроса. На самом деле понялДинамическое и статическое разделение.
  • Диаграмма, объясняющая разделение динамического и статического Nginx

    Nginx 流程图

    • Статические ресурсы, такие как файлы HTML, редко изменяются и могут быть размещены на выделенном сервере для прямого доступа без взаимодействия с фоновым сервером (например, Tomcat).
    • Например, динамические ресурсы необходимо получать на основе данных о том, сколько людей приобрело товары, и отправлять запросы на заказ для хранения данных.Это так называемые динамические ресурсы, которые нельзя понимать как видимые ресурсы в узком смысле.В широком смысле. , он может включать в себя получение результатов логической обработки, выполнение таких операций, как сохранение данных.
  • Униформа CDN

    • Что такое CDN: Народное объяснение CDN заключается в том, что пользователи могут получать ресурсы поблизости, сокращать время передачи по сети и повышать скорость доступа.
    • Файлы HTML размещаются на Nginx, а файлы изображений и файлы сценариев, импортированные из HTML, размещаются на CDN.
    • Работники в униформе CDN обслуживают ресурсы CDN.
  • Блок-схема, объясняющая, как работает CDN

    CDN 流程图

Канал аутентификации

Время: 10:00

«Открылся канал проверки, введите пароль!» Трансляция повторилась еще три раза.

输入密码

Задействованные точки знаний:

  • Зачем вам пароль?
    • Чтобы предотвратить попадание большого количества смоделированных пиковых запросов в процесс бизнес-обработки, сначала добавляется проверка, а эти поддельные запросы отбрасываются.
    • Как ты сделал это? Интерфейсная веб-страница сначала отправляет запрос на получение пароля.При нажатии на кнопку покупки зашифрованный пароль передается в теле запроса, а серверная часть проверяет, совпадает ли пароль. Может быть зашифрован MD5.
  • обобщается какШифрование запроса Seckill.

Шаттл зал

穿梭机大厅

После проверки по каналу проверки половина поддельных запросов была заблокирована, и кто-то вроде меня, получивший правильный пароль, успешно вошел в лобби шаттла.

Когда я пришла в зал, то обнаружила, что в центре зала стоит дисплей, и мне в глаза попалась изображенная на нем красная цифра 100.

Слева от дисплея стояла симпатичная девушка в униформе Redis. Со стороны я услышал, как она контролировала дисплей, чтобы показать оставшееся количество шаттлов. Если число становится равным 0, это означает, что шаттл был полностью занят, и последующие люди должны безуспешно возвращаться.

Redis

Задействованные точки знаний:

  • В сценарии seckill запрос оставшейся инвентаризации — это не прямой запрос к базе данных, а к кэшу Redis.
  • Зачем проверять кеш? Поскольку кеш запросов намного быстрее, чем запрос к базе данных, время отклика сокращается, а нагрузка на базу данных значительно снижается. Если к базе данных будет поступать много запросов на проверку инвентаризации, то база данных рухнет, и база данных не сможет выполнять другую работу.

Захватить голоса

Справа от витрины стоял красивый молодой человек в опрятном костюме и увидел красную повязку с надписью «Redisson» на манжете. С серьезным выражением лица он закрывал глаза на черные просьбы в зале. Может быть, он привык к такой сцене.

Когда я разглядывал этого красавца, то обнаружил, что он держит в левой руке стопку авиабилетов.Да с билетом можно войти в шаттл. Я прибыл перед ним со скоростью 100 метров.Когда я подъехал к нему, на его сторону уже поступило более десятка запросов.Он выдал билеты в порядке поступления-первого прибытия.К моменту Я приехал, осталось всего несколько билетов. , К счастью, мой 100-метровый спринт помог мне достать билет. Я спросил красивого парня, может ли он прислать мне еще один билет, и он отказался.

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

Через десять секунд билет выдан, а на дисплее отображается число 0.

Задействованные точки знаний:

  • Что такое Редиссон? Клиент Redis решает некоторые распространенные проблемы распространения.
  • По сути, здесь используется семафорная функция Redisson.Всего билетов 100, то есть 100 семафоров, и количество билетов не будет перепродано за счет многопоточного параллелизма или распределенных систем. Например, был продан 101 билет.
  • Каждый человек может получить только один билет, что является проверкой идемпотентности, используемой в системе seckill, и билеты нельзя перехватывать повторно.

售票窗口

посадочный талон

登机牌

Симпатичный парень, выдавший билет, сказал мне, что после получения билета нужно подождать в очереди у окна А, чтобы заплатить, прежде чем я смогу получить регистрационную карточку. Итак, я поставил в очередь в окне А еще 99 запросов.

Я увидела просьбу и хотела отказаться от оплаты, сказав, что билет слишком дорогой, а когда я уже собиралась выйти из вестибюля, меня остановил красавец, который выдавал билет, и спросил, следует ли рассматривать просьбу. На рассмотрение есть минут 15. Если заявка по-прежнему чувствует «Нет», билет может быть возвращен ему, и он может выдать его другим.

阻塞

Задействованные точки знаний:

  • Обычно используется в шиповой системебритье очереди. Мгновенно уничтожайте успешные запросы, становитесь в очередь, медленно создавайте заказы и вычитайте запасы.

  • После успешного выполнения seckill быстро сообщите пользователю, что seckill был выполнен успешно, вместо того, чтобы ждать завершения заказа и сообщать пользователю, что ему придется подождать некоторое время, что повлияет на опыт.

  • Зачем сбрасывать очереди? Успешные запросы не должны отправляться в базу данных для одновременного создания заказов, поэтому нагрузка на базу данных будет меньше.

  • В сценарии seckill велика вероятность того, что пользователь заберет его, но не заплатит, в это время инвентарь будет добавлен обратно и может быть предоставлен другим пользователям.

отплыть

После того, как заказ был успешно создан, я успешно получил посадочный талон.Пройдя проверку посадочного талона, я успешно сел в шаттл.

Отправляйтесь на планету Т-714. Я слышал, что база данных этой планеты была разделена на подбазы данных и подтаблицы, а сервисы также были разделены на микросервисы.

启航

Суммировать

Вышеупомянутые проблемы в системе seckill с точки зрения научной фантастики, но не все из них, поэтому восемь основных моментов, на которые система seckill обращает внимание, перечислены ниже:

秒杀场景关注点

  • Служба с единой ответственностью, независимое развертывание
  • Разогрев инвентаря, быстрый вывод
  • Шифрование ссылок Seckill
  • Динамическое и статическое разделение
  • Перехват злонамеренного запроса
  • Движение в шахматном порядке
  • Ограничение тока, предохранитель и переход на более раннюю версию
  • бритье очереди

Просто говорить о принципе нехорошо, не хочешь ли ты выйти на настоящую битву!

Привет, я悟空哥,"7 лет опыта разработки проектов, fullstack-инженер, руководитель группы разработчиков, очень любит базовые принципы графического программирования".

я по-прежнему手写了 2 个小程序,Java 刷题小程序,PMP 刷题小程序, нажмите на меню моей официальной учетной записи, чтобы открыть!
Кроме того, есть 111 материалов по архитектуре и 1000 вопросов для собеседования по Java, все организовано в формате PDF.
Вы можете подписаться на общедоступный номер«Архитектура чата Гоку»Отвечать悟空Получите качественную информацию.

«Ретвит -> Просмотр -> Нравится -> Избранное -> Комментарий!!!»Это моя самая большая поддержка!