Знакомство с планетой
Местоположение: Галактика Бета-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, а также информация о заказе билетов.
Двое рабочих в форме патрулируют экран. На одном униформе напечатан Nginx, а на другом — CDN.
Задействованные точки знаний:
-
Униформа Nginx:
- Рабочие в униформе Nginx поддерживают статические и динамические ресурсы Nginx.
- Страница сведений о продукте является статической страницей.Эти статические страницы хранятся на сервере Nginx.При доступе к статическим ресурсам запрос сначала направляется в Nginx, а затем сервер Nginx проверяет, является ли он статическим ресурсом, доступ к которому осуществляется через запрошенную URL-ссылку.
- Страница сведений о продукте на большом экране не получается с внутреннего сервера путем отправки запроса. На самом деле понялДинамическое и статическое разделение.
-
Диаграмма, объясняющая разделение динамического и статического Nginx
- Статические ресурсы, такие как файлы HTML, редко изменяются и могут быть размещены на выделенном сервере для прямого доступа без взаимодействия с фоновым сервером (например, Tomcat).
- Например, динамические ресурсы необходимо получать на основе данных о том, сколько людей приобрело товары, и отправлять запросы на заказ для хранения данных.Это так называемые динамические ресурсы, которые нельзя понимать как видимые ресурсы в узком смысле.В широком смысле. , он может включать в себя получение результатов логической обработки, выполнение таких операций, как сохранение данных.
-
Униформа CDN
- Что такое CDN: Народное объяснение CDN заключается в том, что пользователи могут получать ресурсы поблизости, сокращать время передачи по сети и повышать скорость доступа.
- Файлы HTML размещаются на Nginx, а файлы изображений и файлы сценариев, импортированные из HTML, размещаются на CDN.
- Работники в униформе CDN обслуживают ресурсы CDN.
-
Блок-схема, объясняющая, как работает CDN
Канал аутентификации
Время: 10:00
«Открылся канал проверки, введите пароль!» Трансляция повторилась еще три раза.
Задействованные точки знаний:
- Зачем вам пароль?
- Чтобы предотвратить попадание большого количества смоделированных пиковых запросов в процесс бизнес-обработки, сначала добавляется проверка, а эти поддельные запросы отбрасываются.
- Как ты сделал это? Интерфейсная веб-страница сначала отправляет запрос на получение пароля.При нажатии на кнопку покупки зашифрованный пароль передается в теле запроса, а серверная часть проверяет, совпадает ли пароль. Может быть зашифрован MD5.
- обобщается какШифрование запроса Seckill.
Шаттл зал
После проверки по каналу проверки половина поддельных запросов была заблокирована, и кто-то вроде меня, получивший правильный пароль, успешно вошел в лобби шаттла.
Когда я пришла в зал, то обнаружила, что в центре зала стоит дисплей, и мне в глаза попалась изображенная на нем красная цифра 100.
Слева от дисплея стояла симпатичная девушка в униформе Redis. Со стороны я услышал, как она контролировала дисплей, чтобы показать оставшееся количество шаттлов. Если число становится равным 0, это означает, что шаттл был полностью занят, и последующие люди должны безуспешно возвращаться.
Задействованные точки знаний:
- В сценарии 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.
Вы можете подписаться на общедоступный номер«Архитектура чата Гоку»Отвечать悟空Получите качественную информацию.
«Ретвит -> Просмотр -> Нравится -> Избранное -> Комментарий!!!»Это моя самая большая поддержка!