Чем больше вы знаете, тем больше вы не знаете
Ставьте лайк и смотрите снова, формируйте привычку
GitHubоткрытый источникgithub.com/JavaFamily, есть карта мозга интервью с большой фабрикой первой линии, добро пожаловать в звезду и улучшайте
немного эмоций
Изначально я выложила рукопись на паблик и сохранила.Когда принимала душ,думала об игре ночью.Чувствовала,что надо включить комп и что-то написать.К содержанию это не имеет никакого отношения статьи.Это просто личное ощущение.SKT VS G2Игра, я не знаю, сколько друзей еще помнятFakerСцена с дрожащими руками.
Не знаю, что вы чувствуете, когда смотрите его.Когда я увидела, как у него трясутся руки, у меня тоже затрепетало сердце.Я поддерживаю чемпионат мира.LPLКоманда, а мне нравится Ли Гэ, такая преданность победе, такая настойчивость, которая сохраняется уже столько лет, и искушение столько интересов перед ним, но хочет только победить, мне очень нравится такой человек, я думаю, многим это тоже нравится.
Может, как говорят многие нетизены, герой опоздал, но я думаю, что у него еще что-то есть, точно так же, как многие говорят, что мы, программисты, можем есть только молодых людей, но если вы настаиваете на собственной настойчивости, будьте поэтическим и книжным брюхом. , я думаю, что я обязательно получу свой в конце концов.
Ну, не буду больше сенсационничать, давайте поговорим о технологиях.
текст
Базовые знания о Redis мы упоминали в последнем выпуске серии Hanging, те, кто не видел, могут ознакомиться с ним.
Серия «Повесить интервьюера» — основы Redis
что упомянулRedisЯ полагаю, что вы в интервью, или собственно процессе разработки, о кешелавина,проникать,аварияЭто вам не чуждо, даже если вы не сталкивались с этим, вы наверняка слышали. В чем разница между тремя, и как мы должны предотвратить это? Мы пригласили следующую жертву.
Интервью начинается
Мужчина средних лет с пузатым животом и в клетчатой рубашке пришел к вам с поцарапанным макинтошем, глядя на свои лысые волосы, думая, что он, должно быть, главный архитектор Нимы! Но у нас есть поэзия и литература в наших желудках, и мы не пусты.
Молодой человек, я вижу, что в вашем резюме написано Redis, так что давайте сразу к делу и ответим на несколько общих важных вопросов: вы понимаете Redis Avalanche?
Привет, красивый и обаятельный интервьюер, я понимаю, что домашняя страница электронной коммерции и горячие данные в настоящее время кэшируются.Как правило, кеш обновляется запланированными задачами или обновляется после того, как его не удается найти.Есть проблема с обновлением запланированных задачи. .
Возьмем простой пример: Если время действия ключа всех домашних страниц составляет 12 часов и обновление происходит в 12:00, у меня есть активность seckill в 0:00 и большое количество пользователей. Предполагая, что в это время было 6000 запросов в секунду. время кеш изначально был в состоянии выдержать 5000 запросов в секунду, но все ключи в кеше недействительны в это время. В это время все 6000 запросов в 1 секунду попадают в БД, и БД должна не справиться с этим, она сообщит в полицию, в реальной ситуации БД может зависнуть не ответив. В это время, если нет специального решения для устранения этого сбоя, администратор базы данных очень беспокоится и перезапускает базу данных, но база данных немедленно уничтожается новым трафиком. Вот что я понимаю под лавиной кеша.
Я сознательно посмотрел на проекты, которые я сделал, и почувствовал, что каким бы большим ни был QPS, он не позволит такому большому QPS напрямую попасть в БД.Разрыв между Redis все еще очень велик.
При этом выходит из строя большая область, а Redis в этот момент уже не тот.Попадание запросов такого масштаба напрямую в базу данных почти катастрофично.Если подумать о библиотеке, которую обслуживает пользователь, то другие от него зависят библиотеки.Практически все интерфейсы будут сообщать об ошибке.Если вы не сделаете фуз и другие стратегии, вы в основном повесите кусок ритма в один миг.Как бы вы не перезапустили пользователя, вы будете зависать Когда вы сможете перезапустить, пользователь уже будет спать, а ваш продукт потерял доверие, что за дрянь продукт.
Интервьюер потрогал его за волосы, ну это неплохо, так что мне делать? Как вы с этим справились?
Обработка лавин кеша проста, в пакетном режимеRedisПри хранении данных хорошо добавить случайное значение ко времени истечения срока действия каждого ключа, чтобы гарантировать, что данные не будут падать одновременно на большой площади.Я считаю, что Redis все еще может выдержать такой трафик.
setRedis(Key,value,time + Math.random() * 10000);
еслиRedisЭто развертывание кластера, которое равномерно распределяет горячие данные по разнымRedisПроблемы всех отказов можно избежать и в библиотеке, но когда я эксплуатирую кластер в производственной среде, один сервис — это соответствующий одиночныйRedisФрагментация предназначена для облегчения управления данными, но у нее также есть недостаток, заключающийся в том, что она может дать сбой.
Или установите срок действия данных точки доступа неограниченный, просто обновите кеш, если есть операция обновления (например, если операция и техническое обслуживание обновят продукт на домашней странице, тогда вам нужно будет очистить кеш, не устанавливайте время истечения) , также могут быть использованы данные домашней страницы электронной коммерции, операции, страхование.
Итак, вы понимаете проникновение и сбой кеша, можете ли вы отличить их от лавины?
Ну я понял, сначала расскажу про проникновение в кеш.Проникновение в кеш относится к данным, которых нет ни в кеше, ни в базе данных, а пользователи продолжают делать запросы.Идентификатор нашей базы данных всегда увеличивается на 1, например, origin is id Данные со значением -1 или данные, чей идентификатор особенно велик и не существует. В это время пользователь, скорее всего, является злоумышленником, и атака вызовет чрезмерное давление на базу данных, что серьезно разрушит базу данных.
Небольшую автономную систему в принципе можно убить почтальоном, типа сервиса Али, который я себе купил
Таким образом, если вы не проверяете параметры, идентификатор базы данных больше 0. Я всегда использую параметр меньше 0, чтобы запросить вас, и каждый раз, когда я могу обойти Redis и напрямую обратиться к базе данных, база данных не может быть найдены, каждый раз Таким образом, одновременная высокая точка легко рухнуть.
Что касаетсяразбивка кешаНу, этотКэш ЛавинаЭто немного похоже, но это немного другое Лавина кеша происходит из-за большой области отказа кеша, которая разрушает БД, и разбивка кеша отличается.разбивка кешаЭто означает, что ключ очень горячий, и он постоянно несет большой параллелизм и большой параллелизм для доступа к этой точке.Когда ключ недействителен, непрерывный большой параллелизм пробьет кеш и напрямую запросит базу данных, как в дыре был прорезан целый ствол.
Интервьюер показал удовлетворенный взгляд, как они решили это соответственно
проникновение в кешЯ добавлю проверку на уровне интерфейса, такую как проверка аутентификации пользователя, проверка параметров и прямой возврат кода для недопустимых параметров, таких как: id для базовой проверки, прямой перехват id
Я хочу упомянуть здесь, что мы должны иметь сердце «недоверие» при разработке программ, то есть не доверять ни одному вызывающему абоненту.Например, если вы предоставляете API-интерфейс для выхода, если у вас есть эти параметры , то я думаю Как вызываемый, любая возможная ситуация с параметрами должна быть рассмотрена и проверена, потому что вы не доверяете человеку, который вам звонил, и вы не знаете, какие параметры он вам передаст.
В качестве простого примера этот интерфейс состоит в том, что вы загрузили запрос, но вы не ограничиваете размер параметров пейджинга, вызов людей в случае проверки integer.max_value Hold за несколько секунд вы будете первым запросом, вы делаете еще несколько одновременных повесил на это? К счастью, большая сделка - это компания, чтобы позвонить в коллеге, которую обнаружил, что избавиться от, но если хакеры или конкуренты делают? В двух одиннадцать в тот же день вы настраиваете этот интерфейс, что произойдет, я бы не сказал это. Это до того, как лидер сказал мне, что, я думаю, что мы все должны понимать следующее.
Из данных, которые не могут быть удалены из кеша, они не берутся в базу данных.В это время значение соответствующего ключа также записывается как NULL, расположение неверно, а затем повторите попытку принять такое тело значения продукта или просмотрите конкретную сцену, время действия кэша можно установить на короткий бит, например 30 секунд (слишком долгое значение может привести к нормальным условиям).
Это может помешать атакующему пользователю повторно использовать один и тот же идентификатор для атак грубой силы, но нам нужно знать, что обычные пользователи не будут инициировать так много запросов за одну секунду, тогда уровень шлюзаNginxЭта мразь, я также помню, что есть элемент конфигурации, который позволяет при эксплуатации и обслуживании блокировать IP-адреса, время доступа которых в секунду превышает порог для одного IP.
У вас есть другой способ?
И я помнюRedisСуществует также расширенное использованиеФильтр БлумаЭто также может предотвратить проникновение в кэш.Его принцип также очень прост.Он использует эффективные структуры данных и алгоритмы, чтобы быстро определить, существует ли ваш ключ в базе данных.Если он не существует, вы можете вернуть его.Проверьте БД на обновить КВ и потом вернуться.
Затем другой друг сказал, что, если у хакера есть много IP-адресов для атаки одновременно? Я так и не понял этого, но у хакеров общего уровня не так много бройлеров, а у хакеров нормального уровня не так много цыплят.RedisКластеры выдерживают такой уровень доступа, мелкие компании не думаю, что им будет интересно. После того, как высокая доступность системы выполнена, кластер все еще очень хорош.
разбивка кешаЕсли это так, установите для данных точки доступа неограниченный срок действия. Или добавьте мьютекс, и вы можете это сделать
Как теплый человек, я обязательно подготовлю код для вас
Интервью окончено
Ну, это неплохо. Я очень хорошо ответил на все три пункта. Сегодня еще не рано. Интервью будет здесь первым. Если вы вернетесь завтра, я продолжу спрашивать вас о высокой доступности кластера Redis, синхронизации master-slave, дозорный и др. знания точечный вопрос.
На самом деле у Halo следующий раунд интервью! (Предвосхищая следующий выпуск, ха-ха) Но для предложения мне еще нужно вылизать, гм, хорошего красавца-интервьюера.
Не могу не похвалить за такой исчерпывающий ответ.
(Подразумевает лайки, но каждый раз, когда смотришь, тебе не нравится Ты хочешь меня проституировать даром? Ты хороший и плохой, но мне это нравится)
Суммировать
Давайте играть и играть, давайте играть, а не высмеивать интервью.
Эта статья кратко представляет,Redisизлавина,авария,проникать, эти три на самом деле похожи, но есть некоторые различия.Во время интервью, это на самом деле вопрос, который необходимо задать, когда дело доходит до кэширования.Не путайте три, потому что лавина кеша, проникновение и поломка-это самые большие проблемы кеша. , или не появиться, раз появиться - вопрос фатальный, поэтому интервьюер обязательно вас задаст.
Каждый должен понять, чтокак это случилось, и как добратьсяизбегатьДа, что делать после того, как это произошлоспасать,Вы можете знать не очень глубоко,но вообще не можете об этом думать.Иногда собеседование не обязательно пытка знаниями,может быть пытка вашего отношения.Если у вас ясное мышление,тознать это и знать, почемуЭто здорово, и вы знаете, как не допустить, чтобы это сработало.
Напоследок, теплый человек, продолжу давать вам небольшое техническое резюме:
В общем, чтобы избежать описанной выше ситуации, мы будем анализировать ее по трем временным периодам:
заранее:RedisВысокая доступность, ведущий-ведомый + дозорный,Redis cluster, чтобы избежать полного сбоя.
В действии: местныйehcacheкэш +HystrixТекущее ограничение + понижение версии, чтобы избежать уничтожения ** MySQL**.
после:RedisУпорствоRDB+AOF, после перезапуска автоматически загружает данные с диска и быстро восстанавливает кэшированные данные.
Я расскажу о вышеперечисленных пунктах в серии зависаний и боев Redis.Должно быть возможно закончить Redis в этом месяце, ограничить текущий компонент, вы можете установить количество запросов в секунду, сколько может пройти компонент, и остальные неудачные запросы, что мне делать?перейти на понижение! Может возвращать некоторые значения по умолчанию, дружественные подсказки или пустые значения.
выгода:
База данных никогда не умирает, а компонент регулирования гарантирует, что только то количество запросов в секунду может пройти. Пока база данных не умирает, это означает, что 3/5 запросов могут быть обработаны пользователем. Пока 3/5 запросов могут быть обработаны, это означает, что ваша система не умерла.Для пользователя может быть так, что страница не может быть пролистнута после нескольких кликов, но после еще нескольких кликов она может быть пролистал один раз.
Это наиболее распространено в нынешних основных интернет-компаниях. Вам интересно, что случилось с определенной звездой, и вы обнаружите, что вы заходите в Weibo, чтобы провести пальцем по пустому интерфейсу, но некоторые люди входят напрямую, вы проводите больше. несколько раз, теперь вы знаете, он был понижен, жертвуя опытом некоторых пользователей в обмен на безопасность службы, это нормально?
Обратите внимание, не потеряйтесь
Хорошо всем, это все содержание этой статьи. Люди, которые могут видеть это здесь, всеталант.
Каждую неделю я буду обновлять несколько статей, связанных с интервью и общими технологическими стеками ведущих интернет-компаний, большое спасиботалантМы можем видеть здесь, если эта статья хорошо написана, я думаю, что «Ао Бин» ячто-тоеслиПожалуйста, лайкните 👍 Пожалуйста, следите за ❤️ поделитесь пожалуйста 👥Это правда для меняочень полезно! ! !
Проституция нехороша, творить нелегко,Ваша поддержка и признание — самая большая мотивация для моего творчества, увидимся в следующей статье!
Ао Бин | Текст [Оригинал]
Если в этом блоге есть какие-либо ошибки, пожалуйста, критикуйте и советуйте, это очень ценится!
Статья постоянно обновляется каждую неделю, вы можете искать в WeChat "Третий принц Ао Бин"Читать и запрашивать обновления в первый раз (на одну-две статьи раньше, чем в блоге), эту статьюGitHub github.com/JavaFamilyОн был включен, есть карта разума точек интервью заводов первого уровня, а также я организовал много своих документов. Добро пожаловать в Звезду и совершенствуйтесь. Каждый может обратиться в тестовый центр для ознакомления. Надеюсь мы можем иметь что-то вместе.