【Об авторе】Этой статьей поделился Ю Цзюньзэ, технический менеджер Ant Financial. Ю Цзюньзэ — старший технический эксперт Ant Financial, руководитель отдела технологии учета платежей и один из основателей технической группы Центра исследований и разработок в Чэнду. , открытая платформа, платежная платформа, построение платформы учета капитала и маркетинговых платежных инструментов; многолетний опыт исследований и разработок в области телекоммуникационного бизнеса, включая BSS|OSS|целевой маркетинг и другие платформы. Я рекомендую официальную учетную запись автора, серьезную, коннотативную, но менее часто обновляемую техническую официальную учетную запись: TheoryPractice. Автор также является инициатором Mesozoic Technology (публичный аккаунт WeChat: freshmantechnology).
Эта статья популяризирует легендарный трехсторонний подход к архитектуре Интернета, так что некоторые игры не догоняют, некоторые не участвуют, и вы можете получить навыки, прежде чем сможете их переварить после прослушивания (обучение тоже здорово)!Некоторые спрашивали, почему именно трехосный, именно [три], а не [четыре], это тоже сила привычки! Например, почему фрукт-блин так расстраивает сестру Сицяо.
Многослойные блины
- У отаку есть три хороших вещи: Дота, Джию и сломанный компьютер.
- У Лолиты есть три хороших качества: мягкое тело, мягкий голос и легкость опрокинуться.
- У Diaosi есть три траты: ты здесь, занят, и рано ложишься спать.
- У богини три сокровища, зачем, хе-хе, иди купаться.
Согласно данным, опубликованным различными компаниями, общее количество красных конвертов, отправленных пользователями WeChat в канун Нового года, достигло 1,01 миллиарда раз, количество взаимодействий с Shake Shake достигло 11 миллиардов раз, а пиковый объем отправки красных конвертов составил 810 миллионов раз. в минуту. Общее количество отправленных и полученных Alipay красных конвертов достигло 240 миллионов раз, количество участников достигло 683 миллионов, а общее количество красных конвертов составило 4 миллиарда юаней с пиковым значением 883 миллиона раз в минуту. Во время прямой трансляции гала-концерта Весеннего фестиваля в Weibo было опубликовано 51,91 млн сообщений, обсуждающих гала-концерт Весеннего фестиваля, а количество пользователей сети, взаимодействующих друг с другом, достигло 115 млн. Общее количество пользователей сети, хватающих красные конверты Weibo, превысило 800 млн раз. "
В этой статье будет рассказано о так называемых уникальных трюках, которые неотделимы от постоянно меняющегося контента с некоторым публичным контентом.Чтобы привлечь запросы, материалы в основном относятся к ситуации с большой секундной системой Taobao и различными системами красных конвертов.
первый топор
Первый топор: выживай [стабильность]Как говорится, тело — столица революции, и первое, что нужно делать, — это жить. В большинстве случаев нет возможности умереть с жертвой, и лучше умереть, чем жить. Что касается того, как жить, то на самом деле есть шаблон, которому нужно следовать, и в технической области для жизни тоже есть красивое название — Стабильность.Практика стабильности У автора есть два глубоких впечатления: [Практика стабильности Taobao], которой поделилась Taobao Xiaoxie в 2011 году.
Этот материал ищет Baidu в стене, а других архивов в принципе нет, уцелела только библиотека Baidu, а адрес не вывешивается. На этом слайде в основном рассказывается о 4 трюках:Планирование емкости, аварийное восстановление кластера, ухудшение зависимостей и мониторинг операций.
Аварийное восстановление можно разделить на несколько уровней рассмотрения: в одном компьютерном зале, в другом компьютерном зале в том же городе и в другом компьютерном зале.
Важно защитить себя, как показано на следующем рисунке, C завис, затем вызов C тайм-аут, как защитить A не тянут?
Дао также дал решение, которое является стабильным переключением. Как показано ниже:
С развитием бизнеса Taobao и Tmall, основанным на идее более элегантной эксплуатации и обслуживания, Atao должна иметь более совершенные, лучшие и более элегантные методы построения стабильности, но ее основной принцип: жить лучше, чем жизнь все!
Множественное резервное копирование, плавное переключение, сверхлимитное ограничение тока, выживание с прерыванием хвоста, также известное как плавная деградация, — это обычные приемы, которыми руководствуются аналогичные интернет-приложения. Кроме того, Amway особенно занимается управлением услугами.С появлением микросервисов есть много людей, которые не могут выйти и познакомиться с людьми. Тем не менее, управление услугами является важной частью управления услугами, и оно неподвластно времени. Если есть тысячи приложений, есть бесчисленное множество сервисных интерфейсов. Чтобы выполнить обновление функции, я должен знать, кто звонил мне и кому звонил я; чтобы улучшить производительность и пропускную способность, я должен знать, какая ссылка является узким местом; чтобы оптимизировать связь, я должен использовать инструменты, чтобы увидеть те сильные зависимости, которые можно настроить для слабых зависимостей и так далее.
Второй пункт на высоте — это пункт из-за рубежа.
Автор проводит некоторые различия между удобством использования и стабильностью. Доступность слишком велика, например, режим FO, MM и т. д. И стабильность подчеркивает средства в однозонных приложениях, таких как переключение, деградация и т. д.
второй топор
Вторая ось: простая масштабируемость (масштабируемость)Что такое масштабируемость, то есть вы можете постоянно увеличивать ресурсы для достижения большей емкости, поддерживать более высокий параллелизм и принимать больше пользователей.. Ресурсом здесь может быть сервер приложений, сервер базы данных или сервер кэширования.
[Обсуждение расширяемой веб-архитектуры] В этом материале также есть определение расширяемости.
Балансировка нагрузки имеет несколько функций, одна — защита доступа и обнаружение сбоев; другая — обеспечить посредника между пользователями и серверами, чтобы увеличение или уменьшение количества серверов было невидимым для пользователей; третья — использовать алгоритмы балансировки нагрузки, чтобы сделать трафик относительно сбалансированное распределение. Балансировка нагрузки включает аппаратные устройства и чисто программное обеспечение, такое как LVS.Балансировка нагрузки может более равномерно распределять запросы страниц и вызовы RPC, что является важным фактором.
(О конкретном содержании балансировки нагрузки в этой статье вдаваться в подробности не буду)
Существует очень старый документ LiveJournal’s Backend — история масштабирования, в котором описывается разработка веб-сайта.
Что не так с сервером, само собой разумеется. Потом…
По мере увеличения числа пользователей пользователям необходимо объединяться в кластеры.
Позже, по соображениям производительности, необходимо использовать кеш, включая Mogile Storage и т. д. Подробнее см.
третий топор
Третья ось: заградительный огонь, противоречиеИз-за маркетинговой деятельности (необходимость создания маркетинговых узлов и расширения влияния) всегда есть много игроков, занимающихся планированием и эксплуатацией продукта, которые всегда рады играть в игру — обрабатывая достаточно запросов пользователей за достаточно концентрированное время, например секунды, так что мир может Этот карнавал также является большим испытанием для демонстрации технической силы.
Xiaomi продает мобильные телефоны, чтобы получить номера счетов, Tmall изобрел День холостяков в День холостяков, WeChat и Alipay два года подряд делают красные конверты к китайскому Новому году. При маркетинговых мероприятиях следует использовать первые две стратегии для обеспечения удобства использования и простой масштабируемости, и в то же время следует пожертвовать третьей стратегией — дамбы, кэши превыше всего и параллелизм горячих ресурсов.
Зачем останавливаться? Все просто, пользователь восторженный (эмоциональный), а система должна быть рациональной! Имея всего 3 айфона, зачем в прилавок льются сотни тысяч людей! В статье о большой секундной системе одноклассники Сюй говорили об этом (чтобы сохранить несколько картинок)...
Также наиболее важным принципом проектирования является выполнение иерархической проверки данных в системах с большим трафиком.Так называемая иерархическая проверка заключается в создании «воронкообразной» конструкции для большого количества запросов, как показано на рисунке выше: попробуйте максимально исключить недопустимые запросы на разных уровнях. Фильтрация, конец "воронки" является действительным запросом. Для достижения этого эффекта данные должны проверяться иерархически. Ниже приведены некоторые принципы:
- 1. Сначала выполните динамическое и статическое разделение данных
- 2 Кэшировать 90% данных в клиентском браузере
- 3. Кэшируйте динамически запрашиваемые данные чтения на стороне Интернета.
- 4 Не выполнять строгую проверку непротиворечивости считанных данных
- 5. Разумное сегментирование записываемых данных по времени
- 6. Защита ограничения тока для запросов на запись
- 7. Выполните строгую проверку согласованности при записи данных
Недостаточно кэшировать 90% данных в клиентском браузере и кэшировать динамически запрашиваемые прочитанные данные в Интернете. В процессе больших секунд возникает экстремальная ситуация, то есть запрос превышает возможности QPS сервера, на котором находится единственный ключ.
Точки доступа к данным, такие как посещение Деталем некоторых горячих элементов, даже кеш TAIR, этот кеш сам по себе имеет проблемы с узким местом, как только запрос будет достигнут, возникает проблема с защитой горячих точек. Иногда кажется, что это легко решить, например, сделать потолок, но вы думаете, что как только точка доступа сработает порог ограничения тока машины, данные кэша этой машины будут недействительными, и косвенно вызовет кэширование. слой базы данных появился лавинообразно. Такие проблемы должны быть объединены с конкретными продуктами Cache, чтобы иметь лучшее решение.Вот общее решение, просто сделайте локальный Localcache, когда вы найдете горячие данные, направьте кеш в клиенте, а не запрашивайте сервер Cache.
Точки обновления данных, проблемы с обновлением В дополнение к изоляции горячих точек и обработке очередей, описанным выше, существуют также некоторые сценарии, такие как обновление поля lastmodifytime продукта, которое будет происходить очень часто. быть объединены в течение определенного периода времени.Выполняется только последний SQL, что может уменьшить операцию обновления в базе данных. Кроме того, автоматическая миграция горячих точек теоретически может быть выполнена на уровне маршрутизации данных.Горячие области автоматически переносятся из общей библиотеки и помещаются в отдельную библиотеку горячих точек с помощью описанного выше обнаружения горячих точек в реальном времени.
опыт
Пожалуйста, позвольте автору обобщить решение для решения с высокой степенью параллелизма.Используя кеш, кеш можно разместить на фронтенде, чтобы ссылка вызова была кратчайшей.
Кэш здесь — это не только redis или memcached, но и идея локального или climatchent приоритета для устранения зависимости от параллельных ресурсов. Например[Демистификация технических деталей WeChat Shake]В статье упоминаются:
В соответствии с общей реализацией системы, красные конверты, которые видит пользователь, представляют собой записи данных в базе данных системы.Чтобы захватить красные конверты, нужно найти доступные записи красных конвертов и идентифицировать запись как совпадение, принадлежащее определенному пользователю. . В этой реализации база данных является узким местом и основными накладными расходами системы. Мы вообще не используем базу данных в этом процессе, что позволяет добиться повышения производительности на несколько порядков, и в то же время лучше гарантируется надежность.
- 1 Платежная система сгенерирует все красные конверты, которые необходимо выдать, в файлы счетов в красных конвертах;
- 2. Разделите файл билета в красном конверте и поместите его в каждый экземпляр службы доступа;
- 3 После получения запроса на встряхивание, инициированного клиентом, логика встряхивания в службе доступа извлекает билет в красном конверте, локально генерирует зашифрованный билет, привязанный к пользователю, и отправляет его клиенту;
- 4 Клиент переносит зашифрованный билет в фоновый режим, чтобы открыть красный конверт, а упрощенная служба красного конверта в фоновом режиме совпадения может проверить красный конверт с помощью локального расчета и завершить процесс захвата красного конверта.
Спин-офф горячие точки
Как было сказано выше, в крайних случаях кеш второго уровня используется на большие секунды, а проблема превышения пропускной способности кеш-сервера достигается за счет разбиения ключа. В фейсбуке есть хитрость, то есть через множественный key_index (key:xxx#N), для получения данных хоткея, суть в том, чтобы разогнать ключ. Он достаточно эффективен для большого числа одновременных операций чтения, не требующих высокой согласованности. Как показаноТогда решение:
- Hot keys are published to all web-servers
- Each web-server picks an alias for gets
- – получить ключ:xxx => получить ключ:xxx#N
- Each web-server deletes all aliases
Есть один простой способ решить проблему параллелизма: разделить! Есть два способа разделения.
1 Ресурсы для сноса
Во-первых, ресурс (resource) удален, а знаменитый, например Concurrenthashmap, разобран на 16 бакетов, и у него сильно улучшена параллельная способность.
2 Снос основных данных
В приложении с красным конвертом, если вы все еще полагаетесь на общие базовые данные, вы также можете разделить эти базовые данные на несколько ячеек.
предварительная обработка
[Взаимодействие 180,8 миллиарда раз, 16 раз больше! Говоря о проблеме высокого параллелизма красных конвертов Alipay]В статье говорится:«В этом гала-мероприятии «Весенний фестиваль» задействовано большое количество ресурсов, включая изображения, видеоролики с новогодними поздравлениями и т. д. И изображения, и видеоролики имеют относительно большой размер, от десятков до сотен килобайт. В пиковый период, если Мгновенные массивные запросы В CDN такая большая пропускная способность запросов вообще не может быть обработана Мы оценили потребность в пропускной способности примерно в несколько терабайт в то время.
Чтобы эффективно выдерживать давление мгновенных пиков на CDN, мы эффективно управляли и контролировали ресурсы. Во-первых, в клиенте заранее заложено несколько дефолтных ресурсов, в случае, если он действительно выйдет из строя, эти ресурсы можно будет использовать. Во-вторых, старайтесь открывать вход как можно раньше, а загружать ресурсы на локал уже после того, как пользователь просмотрит. Удаленный доступ к CDN больше не требуется при повторном просмотре. Наконец, был составлен план действий в чрезвычайных ситуациях: как только в пиковый период была обнаружена дорожная тревога, необходимо было срочно переключиться с видео на изображение, чтобы снизить нагрузку на полосу пропускания и убедиться, что не будет таких проблем, как черный экран, вызванный недостаточной пропускной способностью, и черный экран. экран, вызванный текущим ограничением.
«Команда WeChat также упомянула:»
В канун Нового года пользователи могут встряхнуть, чтобы принять участие в мероприятиях, встряхнув, чтобы перейти к красным конвертам или другим страницам активности.Для этих страниц требуется много ресурсов, таких как изображения, видео или страницы H5. Во время мероприятия много пользователей-участников и большое количество запросов на ресурсы. Если все они будут доступны онлайн в режиме реального времени, пропускная способность сети сервера будет находиться под огромным давлением и не может поддерживаться. Кроме того, размер ресурсы относительно велики, и загрузка на мобильный телефон занимает много времени, пользовательский опыт также будет плохим. Поэтому мы используем метод предварительной загрузки, чтобы передать ресурсы клиенту за несколько дней до события, и клиент напрямую загружает их локально, когда это необходимо. "
Асинхронный
В легенде о реках и озерах есть поговорка, что она максимально асинхронна. При выполнении действий ресурсы так ценны.Если вы не понимаете сторону C, но можете терпеть это, позвольте ей делать это медленно, и такие вещи обычно ставятся в очередь.Могуцзе цигун в Ханчжоу, также известный как Сяобай, является теплым другом. Он упомянул, что транзакционные службы полагаются на слишком много решений. Слишком большое количество зависимостей служб приведет к увеличению сложности управления и увеличению рисков стабильности. Представим, что если мы сильно зависим от 10 сервисов, 9 из них успешно выполняются, а последний дает сбой, будут ли откатываться первые 9? Стоимость по-прежнему очень высока. Таким образом, в соответствии с предпосылкой разделения большого процесса на несколько небольших локальных транзакций, для связанных бизнес-записей не в реальном времени и не строго согласованных, после успешного выполнения локальной транзакции мы выбираем отправку уведомления о сообщении и выполнение связанного транзакция асинхронно план. (Посмотрите на изображение ниже, они могут быть асинхронными?)
использовать очередь
Блок, блок, блок; позднее сопротивление кеша; параллельное разбиение, которое кеш не может обработать; но все еще есть проблема, то есть экстремально горячие ресурсы находятся в БД, если параллелизм высокий, проблемы все равно будут . В большой второй статье есть лучшее решение, то есть очередь. Веб-сервер стоит в очереди, а на уровне db тоже делается очередь патчей.Это правда, что бизнес — лучший учитель, так зачем же жертвовать большими ходами!Прикладной уровень выполняет организацию очередей. Установите порядок очереди в соответствии с измерением продукта, что может уменьшить параллелизм одного и того же компьютера с одной и той же строкой записей в базе данных, а также контролировать количество подключений к базе данных, занимаемых одним продуктом, предотвращая использование слишком большого числа горячих продуктов. соединения с базой данных. Подробности можно прочитать во второй большой статье.
Суммировать
Подводя итог, можно сказать, что архитектура Интернета имеет три оси:- Стабильность
- Простой и масштабируемый (масштабируемость)
- Речная плотина / одновременный переход
Написав такой длинный рассказ, я тоже был пьян, и Куан должен сделать все возможное для тех друзей, у которых не было времени на учебу и учеба не внимательная.
【Цитирование источника контента】
«Взаимодействие 180,8 миллиарда раз, 16 раз больше! Говоря о проблеме высокого параллелизма Alipay Red Envelopes» — официальный аккаунт QCon
«Миллиард красных конвертов падает с неба, раскрывая технические детали, лежащие в основе Wechat Shake» — Веб-сайт InfoQ «Подробное объяснение дизайна системы Taobao Big Second» — CSDN «Расшифровка красных конвертов Weibo: архитектура, Anti-Brush, мониторинг и планирование ресурсов» — Веб-сайт InfoQhttp://www.slideshare.net/jboner/scalability-availability-stability-patterns
LiveJournal's Backend - A history of scaling
Mesozoic Technology Group Официальный аккаунт WeChat