Оригинал: Miss Sister Taste (идентификатор публичной учетной записи WeChat: xjjdog), добро пожаловать, пожалуйста, сохраните источник для перепечатки.
Спайк — как овощной рынок в плановой экономике: пассажиры спешат, а ты приходишь и уходишь. Какое-то время было шумно, а потом остались только пустынные и одинокие улицы.
Давайте посмотрим на историю о продаже гуся. ↓↓↓
Только вчера. Был только рассвет, около пяти или шести часов утра, и несколько программистов с пушистыми волосами вместе ушли с работы. В это время уличные фонари на улице не погасли. Несколько стариков упражнялись, подбоченясь, наклонившись вперед, согнувшись в поклоне.
Поэтому особенно бросается в глаза разносчик, продающий гуся на развилке переулка. Я увидел большую группу гусей, запертых в клетке Нуоды и хлопающих крыльями. Было несколько энергичных, вытягивали шеи и каркали, и коробейник расстроился, когда услышал их, и стал стучать им по головам ветками в руках.
Лоточник скривил рот и краешком глаза посмотрел на телефон: было уже пять шестьдесят. В этот момент со всех сторон собралась группа теток, как будто они появились из-под земли. Сначала он подходил не спеша, но, увидев, что в клетке действительно стая гусей, взял в руку мешочек и бросился рысью.
Эта грозная битва потрясла всех, и программисты замерли. Талия дяди больше не сгибается, и даже те крикливые гуси больше не лают.
Вскоре нашлась тетка, которая помогла разносчику открыть клетку, а сама схватила гуся за шею и вытащила его. Затем другая рука схватила крыло другого гуся. Вдруг люди закричали гусиное ржание, наделав много шума, и повалил снег гусиными перьями. Через некоторое время все гуси оказались в руках тетушек. Но есть и больше теток, которым не досталось гуся, утирая слезы раскаяния и ревности платками.
Больше всех обрадовалась тетя Ванга, у нее были большие руки, она поймала трех гусей, двух несчастных гусей она держала в одной руке, и шеи их были свернуты в виток. Есть и гуси, которых зажали насмерть.Тетка, совершившая смерть гуся, этого не хочет, но есть еще тетки, которым это совсем не не нравится.
Разносчик вздохнул с облегчением, уловка действительно удалась, поэтому он сделал шип, и эта группа гусей, пострадавших от чумы, была моментально расправлена по низкой цене.
Все это попало в глаза притаившимся в сторонке программистам. Когда люди почти рассеялись, они окружили разносчиков, и у одного из них были острые глаза, и он закричал: "Этот продавец гусей, не правда ли, xjjdog?"
"xjjdog идет. Мы могли бы также найти ресторан жареных палочек из теста, садитесь и ждите, пока я отдам его вам, не торопитесь."
Убить сложность
Спайку, такое классное слово, суждено быть не барашком, а полчищем зверей. Системная разница между 3w юаней и 3000w, хотите знать?
Любая неравная ситуация создаст кризис, и то же самое верно для бизнес-систем. Систему сложно убить за секунды, и в основном она сосредоточена на следующих моментах.
1. Расход превышает допустимый диапазонВторое убийство, обычно классифицируемое как
突发流量
, объем запросов обычного дня может быть выполнен за несколько секунд. Нехватка ресурсов seckill также приведет к тому, что ресурсы станут горячими точками, что приведет к ситуации, когда многие люди будут конкурировать. Представьте себе платную дорожную станцию на маленьком празднике, и вы можете понять, как разгорячены участники, которые ничего не получают.
2. Конфликт ресурсов
Если для хранения данных используется традиционная база данных, конкуренция за один и тот же ресурс столкнется с серьезными конфликтами блокировок. Как правило, внешнее, более быстрое хранилище размещается впереди, что включает синхронизацию данных между исходной библиотекой и целевой библиотекой.
От запуска товарных ресурсов до завершения спайка он будет испытывать кратковременное хаотичное состояние, и будут возникать несоответствия данных. В случае очень концентрированных запросов также будут проблемы с параллелизмом, а индивидуальное поведение и результаты будут непредсказуемыми.
3. Высокая сложностьSeckill также предъявляет высокие требования к инфраструктуре и технологиям: от уровня доступа до кэша и уровня хранения, а также к соображениям безопасности, он требует участия нескольких компонентов, и каждый компонент необходимо оптимизировать.
Словом, шумно и шумно, со временем вернется спокойствие. Аппаратные ресурсы, подготовленные для мгновенного уничтожения, не могут оставаться там без дела, поэтому, как правило, будет фаза высвобождения ресурсов, которая является более поздней историей, и мы не будем уделять ей слишком много внимания.
три стадии бизнеса
В целом бизнес seckill будет разделен на три этапа. Среди них стадия панических покупок — это то, что мы часто называем бизнесом секилла.
1. Этап подготовки
На этапе подготовки, помимо подготовки программно-аппаратных комплексов, в основном будет разминка к мероприятию, а интернет-операции будут распространять такие вещи, как небольшие рекламные объявления на телефонных столбах. Давным-давно клиент провел мероприятие seckill, 99 человек участвовали в 100 акциях, а у 99 человек было 90 внутренних сотрудников, что было неловко.
Если у вас есть собственное приложение, вы можете добиться лучших результатов с помощью уведомлений и подписок. Если задействовано много товаров и количество участников огромно, данные будут предварительно обработаны и подогреты заранее. Когда все будет готово, можно выкурить сигарету и дождаться обратного отсчета.
2. спешить с покупкой
Как говорится, одна минута на сцене, десять лет вне сцены. В начале пика будет большой наплыв мгновенных запросов, и пора выступать на сцене. На этом этапе каждая из наших систем и модулей будет быстро меняться.Если какой-либо момент не будет тщательно рассмотрен, это приведет к сбою этой пиковой активности, поэтому ключевые компоненты должны быть высокодоступными.
3. Прекращение ликвидации
Как упоминалось выше, спайки будут иметь кратковременное хаотичное состояние. На этапе ликвидации должна быть завершена окончательная согласованность данных, и действие удаления может длиться в течение длительного времени. Некоторые пользователи могут пожалеть в момент оплаты, и товар будет возвращен на склад. Товары, которые возвращаются на склад, обычно продаются снова, например, билеты на поезд, которые можно снова забрать через 30 минут; некоторые товары могут быть заблокированы и удалены с полок, исчезая навсегда.
Принцип ограничения
Здесь мы обычно говорим об основных технических ограничениях системы seckill, подробное описание и код мы объясним в следующих главах.
Прогрев данных
В некоторых системах может быть всего несколько предметов, которые можно убить за секунды, и ручной ввод может быть забавным. Для типов платформ или приложений с огромным количеством пользователей уже не так просто продавать товары за считанные секунды.
В середине некоторые данные будут объединены или двумерно расширены, то есть данные, которые будут уничтожены за секунды. После обработки данных они заранее поступают в систему seckill для предварительного нагрева данных.
Пройдет ли фаза всплеска гладко, зависит от того, насколько разумна подготовка данных.
носитель запроса
Это самый внешний уровень запроса и относится к уровню доступа. Хорошо сделанная система может блокировать большинство запросов на уровне доступа, значительно снижая нагрузку на серверные службы.
количество подключений
Для уровня доступа первой проблемой является количество подключений. Уровень доступа общего интернета — lvs+nginx. Это будет связано с оптимизацией операционной системы, а также с оптимизацией самого nginx.
одновременный носительДля запросов, попадающих на определенную машину, все равно будет проблема высокого параллелизма. Использование пулов потоков должно быть разумным, и существуют определенные проблемы с фильтрацией, слиянием и т. д.
балансировки нагрузки
Запросы должны быть по-настоящему сбалансированы и не должны вызывать горячих проблем. Например, ip_hash nginx может в определенной степени избежать проблемы распределенной сессии, но запросы будут несбалансированными.
Повторить?
Не настраивайте повторные попытки для служб seckill, что увеличит нагрузку на систему. Запрос не выполнен? Затем сделайте это снова.
Изоляция системы
Системные ресурсы, занятые бизнесом seckill, серьезно не соответствуют нормальной работающей системе. Если позволяют условия, аппаратное обеспечение и сервисная среда системы seckill должны быть в определенной степени изолированы от обычной бизнес-системы. Заранее оцените нагрузку на другие службы, чтобы не повлиять на нормальный бизнес.
CDN
Для html, js, css, изображений и другого контента требуется много трафика. Если вы поместите эти ресурсы на свой собственный сервер, полоса пропускания будет быстро заполнена при поступлении трафика, что приведет к сбою выполнения обычного пикового запроса. CDN может эффективно решить эту проблему. Остальные запросы — это настоящий всплеск.
Уменьшить пакеты запросов
Для пакетов сетевых запросов требуется большая оптимизация. Можно включить сжатие gzip, да и сами ресурсы тоже сжимаются, чтобы убрать ненужную информацию в пакете запроса, и упростить сетевые пакеты.
запрос на перехват
Очень важный принцип системы seckill — перехватывать как можно больше недействительных запросов извне. Перехват запроса можно разделить на перехват восходящего потока и перехват бизнеса.
восходящий перехват
В плане перехвата есть глобальная настройка. Когда система оценивает и достигает стадии узкого места, служба может быть понижена с помощью метода полного ограничения потока.Для некоторых вторичных служб требуется обработка предохранителей. Для внешнего интерфейса также необходимы некоторые оптимизации. Например, кеширование браузера, антиреентерная проверка и т. д. могут перехватить значительное количество запросов.
перехват бизнеса
За исключением некоторых глобальных ограничений, для большинства запросов он тесно связан с пользователем. Пользователь может часто обновляться или обходить внешний интерфейс и напрямую использовать программное обеспечение для вызова внутреннего интерфейса. Незаконные запросы этих пользователей также должны быть перехвачены.
В то же время пользователи не должны бесконечно ждать, чтобы конкурировать за ресурсы. Например, когда на складе есть 100 товаров, когда приходит 1-й запрос, больше не нужно ждать в очереди, и можно вернуться прямо к шипу.
Что касается очереди, то будет использоваться очередь в jvm, а внешняя очередь сообщений, mq, будет использоваться для буферизации запросов.
кеш данных
Кэш, пожалуй, самый важный компонент системы seckill. От внешнего кеша до кеша JVM и распределенного кеша производительность системы будет улучшена на порядки. Стоит отметить, что, поскольку система seckill сильно зависит от системы кэширования, система кэширования должна быть высокодоступной.
Для кэшированных операций чтения следует учитывать загрузку и синхронизацию данных. Для запросов на запись необходимо учитывать слияние данных и параллельную запись, согласованность данных и т. д. Хотя скорость кэша намного выше, чем у БД, его производительность всегда имеет узкое место, и связанный с ним код необходимо оптимизировать.
Безопасность
Порог технологии становится все ниже и ниже, и второклассники начальной школы начали занятия, чтобы учить свифт, и легко написать плагин второго убийства или что-то в этом роде. Безопасность шиповой системы важнее.Следует сказать, что системы, которые имеют дело с деньгами, подвержены проблемам. Если вы хотите поднять шум, искать маркетинг и убить бизнес за секунды, вы правы.
Необходимо максимально улучшить порог накрутки, например динамический URL, который изолирует большинство атак от входа, проверочный код только увеличит расходы злоумышленника. Для некоторых с более высоким уровнем безопасности также будут добавлены правила контроля рисков, такие как чрезмерные баны для одного и того же IP-запроса, отсутствие участия в течение трех дней с даты регистрации учетной записи, а порог для seckill должен быть золотым участником.
Однажды я испытал, что у другой стороны изначально был проверочный код для сложения, вычитания, умножения и деления, и был написан сценарий. В результате за 5 минут до всплеска был получен проверочный код 12306, и xjjdog сразу же сдался.
БД прячется за кулисами
Во всей шиповой системе традиционная БД может только прятаться за кадром (кроме малого трафика). Если бы я был ДБ, я бы прятался и дрожал.
Данные БД должны быть загружены в систему спайков для расчета заранее.После спайка беспорядочные данные должны быть выгружены и очищены. Во многих спайковых сценах, которые я видел, мне даже не нужно участие DB, что действительно смело.
Это поднимает другой вопрос. Если есть проблема с системой кэширования, следует ли проникнуть в запрос? Мое предложение - не нужно. Аномальные запросы мгновенно перегружают БД, что приводит к более серьезным проблемам с нарушением целостности данных, а если изоляцию не сделать, то последствия будут еще более дикими. Вместо того, чтобы ошибаться, лучше признать это и послушно написать отчет о неисправности.
End
Spike, поиск сокровищ, p2p, созданные в Интернете, являются тремя главными убийцами денежных мешков.
Я собираюсь сказать что-то загадочное. Не так давно моя группа гусей была в порядке, но в нее попала курица с чумой, и через несколько дней она заболела и умерла, жалко было бы ее выбрасывать. На этот раз линия продажи гуся также очень компактна.
Буквально вчера я сообщил, что мне нужно разобраться с партией дешевых гусей. Дабы переубедить тетушек, я взял 50% скидку по рыночной цене.На самом деле я могу получить со скидкой(вроде гуся на Доуине продавать не смеют). После 5 часов я вколол стимулятор нескольким не готовым гусям, надеясь, что они продержатся немного дольше, и постучал им по голове веткой, чтобы подтвердить. Не то чтобы я был уверен, что такого рода сцены, даже мертвого гуся, можно продать. Но много людей погибло, это ведь нехорошо. Чтобы ограничить скученный поток людей, я намеренно пропустила проволочные уголки у входа в клетку.Многие тетушки порезали себе руки и не смогли поймать гуся.Не знаю, повезло им или повезло.
Кто первым создал шип? Какой гений. Как и голодный маркетинг, это налог на IQ. хахаха~
Об авторе: Miss Sister Taste (xjjdog), общедоступный аккаунт, который не позволяет программистам идти в обход. Сосредоточьтесь на инфраструктуре и Linux. Десять лет архитектуры, десятки миллиардов ежедневного трафика, обсуждение с вами мира высокой параллелизма, дающие вам другой вкус. Мой личный WeChat xjjdog0, добро пожаловать в друзья для дальнейшего общения.