Конференция раннего чата по интерфейсу, новая отправная точка для развития интерфейса, была проведена совместно с Nuggets. Добавьте WeChat codingdreamer в эксклюзивную внутреннюю группу поддержки конференции и выиграйте на новой стартовой линии.
14-я сессия Front-end Growth and Promotion, 8-29 будет в прямом эфире, 9 лекторов (Ant Financial Services / Tax Friends и т. д.),Нажмите на меня, чтобы сесть в машину 👉 (Адрес регистрации):
Текст выглядит следующим образом
В этой статье рассказывается о третьем сеансе — специальном сеансе по созданию страниц интерфейса, который провел лектор Ичунь:
Всем привет, позвольте мне представить строительную платформу фронтенд-команды Alimama Marketing and Experience Center.
В настоящее время существует множество схем реализации для построения платформы, в том числе конструкция с низким кодом для пользователей типа B, вероятно, начиная с самых базовых компонентов, таких как кнопки, раскрывающиеся списки и т. д., и комбинируя их для формирования полного страница.Стили часто относительно стандартны, а функции очень сложны.Иногда может потребоваться вмешательство в разработку некоторого кода, который больше подходит для построения внутренних рабочих платформ или страниц.Представлено подробно.
Существует также тип маркетинговой страницы для пользователей типа C, который заключается в создании маркетинговой страницы для обычных потребителей. Этот тип страницы часто более красив по стилю, а функция относительно проста. Основные материалы на его основе: часто бизнес-компоненты с относительно высокой степенью завершения или непосредственно настраиваемой страницей, которые могут быть настроены и опубликованы студентами, не являющимися техническими специалистами, с простой конфигурацией, чтобы повысить общую эффективность бизнеса.
Маркетинговая и строительная платформа Алимамы относится к последним.В настоящее время и строительная сторона, и рендеринг реализованы на основе Node.Конечно, я считаю, что предыдущие студенты уже подробно рассказали о других схемах построения.Я здесь, чтобы Мы сосредоточимся на обсуждении проблемы логистической поддержки, с которой мы часто сталкиваемся при создании платформы, а именно на развертывании материалов.
представление о себе
Позвольте мне сначала представиться, цветка зовут Ичунь, в настоящее время он работает в творческой группе Alimama, отвечающей за создание инфраструктуры системы. Я присоединился к отделу разработки Alimama примерно в начале 2016 года и отвечал за подключение некоторых решений в направлении строительства внутри бизнес-команды.
Дополнительным моментом, который следует упомянуть, является то, что раньше я отвечал за разработку платформы планирования логистики на Baidu, почему я должен упоминать об этом дополнительно? Потому что толкающий модуль развертывания и система логистики, которые в основном объясняются сегодня, также связаны друг с другом.Концептуально они все грузовые перевозки.Вы можете сначала представить это, а затем конкретное содержание будет постепенно расширяться вместе с вами.
Вот план сегодняшнего обмена, который в основном разделен на три части и, наконец, обобщен.Конечно, прежде чем перейти к основной теме, я кратко представлю нашу архитектуру продукта и план построения в первой и второй частях, а третья часть войдет в это Давайте обсудим с вами анализ и разработку набора решений для развертывания, которые могут поддерживать крупномасштабные материалы.
Введение в создание архитектуры продукта
Давайте сначала представим архитектуру нашего продукта.
Позвольте мне сначала представить наш отдел.Я считаю, что многие студенты имеют определенное представление об Али Мама.Мы в основном отвечаем за отдел доходов от рекламы Ali Group.Когда дело доходит до интернет-рекламы, невозможно избежать производства и доставки рекламы.
Первоначальный спрос на создание платформы заключается в том, что рекламодателям необходимо создавать рекламные креативные целевые страницы с целью рекламы, а затем запускать их. Здесь есть определенные пороги для производства рекламных идей, и рекламодатели вряд ли позволят им всем разрабатывать страницы, поэтому платформа для создания страниц может помочь им в достижении этой цели.
Что касается формы рекламных страниц, то естественно, что страницы H5 больше подходят для рекламы, поэтому Alimama давно начала пытаться создавать некоторые платформы, в основном для обслуживания большинства рекламодателей для создания страниц. В качестве строительной технологии ее также можно использовать для создания платформы для внутреннего вторичного маркетинга.Конечно, платформа управления контентом относится к более низкому размерному уровню и технически поддерживается потребностями бизнеса.
Введение в архитектуру продукта
Вот упрощенная схема нашей общей архитектуры продукта.
Платформа Taojimu — это платформа для создания рекламных креативных целевых страниц для рекламодателей. ALP — это платформа для создания маркетинговых страниц для внутренних юниоров. Ее полное название — Alimama Landing Platform, также известная как платформа Love Wife. в бизнес-поддержке базовые строительные решения в целом одинаковы.
Два других являются предвзятыми технологиями.Оркестровка интерфейса в основном предназначена для визуальной настройки интерфейса данных, который можно понимать как уровень пользовательского интерфейса данных, но он может поддерживать визуальную оркестровку;инженерный пакет в основном является инструментом для внутренней разработка Xiaoer для создания основных материалов, который представляет собой набор инструментов разработки на основе командной строки.
Конечно, у нашей фронтенд-команды есть и другие продукты звездного уровня, которые также сильно поддерживают и укрепляют наши общие возможности построения, такие как платформа творческого центра для графического и видеорендеринга и iconfont для управления пользовательскими векторными шрифтами.Все они реализованы на основе Node. Magix — это разработанный нами интерфейсный фреймворк, похожий на React/Vue.Он хорошо интегрирован в нашу строительную платформу в повседневной разработке.
Сводная информация о ценности продукта
Вот некоторые данные о нашей платформе, которая в настоящее время обслуживает в общей сложности 30+ пользователей-рекламодателей, а также охватывает различные внутренние направления деятельности Alimama.Общее количество созданных страниц уже превысило 200 Вт, и она по-прежнему работает с чрезвычайно высокой скоростью. каждый день он выполняет более 300 миллионов PV.Конечно, объем запросов будет больше в период акции, и все они реализованы на основе Node.Это очень большой сервисный кластер Node в Alibaba Group.
С точки зрения ценности продукта, это не только облегчает рекламодателям создание целевых страниц для рекламы, но и помогает нам значительно повысить общую эффективность бизнеса внутри компании.Многие страницы больше не требуют вмешательства в разработку от производства до публикации. Например, в нашей предыдущей большой акции только в этой области были тысячи активных страниц маркетинговой активности, и с изменением стратегии продвижения нам нужно публиковать и продвигать операции.Если у нас нет помощи в создании платформы , мы будем полагаться на ограниченные ресурсы разработки.Это в принципе невозможно завершить, поэтому это не только высвобождает продуктивность разработки, но и делает бизнес-итерации более эффективными.
Знакомство со строительными решениями
Далее давайте посмотрим на это с точки зрения схемы построения.На самом деле я видел много схем реализации построения.Если смотреть только на результаты реализации схем построения,то есть определенное сходство. детали и технические схемы разные.
Что касается моей строительной платформы Alimama, мы на самом деле называем всю систему LEGO 2, что означает, что страница построена как строительный блок LEGO. Это название на самом деле конфликтует с LEGO группы, но оно не названо в честь Lego группы. На самом деле , Алимаму также называли Лего, когда она изучала план строительства. Позже, после обновления, она была названа Лего 2. Это не мешает нам видеть ее первоначальную идею дизайна продукта, которая похожа на строительные блоки. Чтобы построить страницу, Платформа Taojimu также названа на основе этого.
основные понятия построения
Таким образом, наш план строительства состоит в том, чтобы рассматривать основные материалы, такие как компоненты, как части строительного блока, а заполненную страницу как готовый строительный блок.Благодаря этой аналогии вы должны представить наш базовый план, который может быть подобен вашему строительству. план. .
Основными базовыми материалами нашей строительной платформы являются компоненты. В частности, мы далее классифицируем их на компоненты материнской платы, компоненты компоновки и бизнес-компоненты. Они различаются по функциям, но в основном одинаковы с точки зрения технической обработки.
- Бизнес-компоненты, которые легче понять, представляют собой повторно используемые блоки бизнес-логики, которые непосредственно формируют различные области страницы.
- Компонент макета — это специальный компонент, который ограничивает конкретное размещение бизнес-компонентов.
- Компонент материнской платы на самом деле является контейнером контекста выполнения страницы, таким как объявление конкретных статических ресурсов, от которых зависит страница, и т. д.
Разумеется, в него входят и некоторые другие слабо связанные со сборкой материалы, такие как шунтирование для ABTest, блоки для поддержки повторно используемых фрагментов кода и т.д.
Это наш интерфейс построения.В принципе реализация у всех здесь чем-то похожа.Левая сторона-это область предварительного просмотра построения страницы,средняя-информация о дереве компонентов,а правая сторона-очень важная область редактирования данных операции.
Процесс строительства с точки зрения эксплуатации
Общий процесс сборки, прежде всего, вы должны выбрать компонент материнской платы в качестве контейнера для переноса других бизнес-компонентов.Конфигурация компонента материнской платы открыта.По сути, каждое направление бизнеса будет разрабатывать набор материнских плат для собственного использования , а затем Строители бизнес-линий могут использовать его вместе, и каждая бизнес-линия может свободно разрабатывать конкретные компоненты материнской платы.
После завершения выбора материнской платы устанавливается исполнительный контейнер, а затем выбираются соответствующие компоненты со склада компонентов и добавляются на страницу.Вот небольшое видео, чтобы показать это.Основные шаги:
- Компоненты, добавленные пользователем
- Отрегулируйте положение компонента
- Настройка рабочих данных для компонентов
- Сохраните выпуск после завершения проверки
Если вам не нужно добавлять компоненты, вы можете начать сразу с третьего шага настройки рабочих данных компонентов.
С точки зрения эксплуатации и строительства, фактический процесс строительства относительно прост.Основными материалами плана строительства здесь являются различные компоненты, которые можно использовать повторно.Например, вышеуказанные компоненты карточек товаров можно использовать на многих страницах., вы также можете изменить представление компонента, настроив параметры компонента.
Процесс разработки с точки зрения развития
С точки зрения разработки также необходимо обратить внимание на процесс производства материалов и реализовать разработку основных материалов с помощью инженерных комплектов.Весь процесс строительства описан выше.Производство, разработка, отладка и выпуск Все основные материалы выполняются в локальной командной строке.Публикация в хранилище строительной платформы, с готовыми материалами, эксплуатация или разработка, студенты используют платформу визуального конструирования для создания страницы, или операция непосредственно строит и настраивает Готовая страница, наконец, отправляется в наш кластер рендеринга.
Здесь объясняется, что рендеринг делится на централизованный рендеринг и независимый рендеринг.Вы можете просто понять, что контент несовместимых сервисов распределяется по разным кластерам для обработки рендеринга, чтобы не класть яйца в одну корзину для изоляции рисков.Конечно, конкретный процесс распространения также основан на развертывании модуля для отправки.
Технические принципы и архитектура
С точки зрения технической архитектуры, большая картинка слева — это наша общая диаграмма технической архитектуры, которая разделена в соответствии с различными функциональными уровнями.
-
Строительный слой в основном отвечает за производство материалов и страниц;
-
Уровень хранения хранит произведенные материалы и информацию о них, а затем уровень рендеринга планирует потребление;
-
Уровень рендеринга в основном основан на информации о конфигурации страницы, объединяя материалы в полную страницу для возврата. Вот некоторые из наших основных функциональных модулей, такие как механизм рендеринга, шунтирующий модуль и так далее;
-
Уровень приложения, в дополнение к планированию задач рендеринга, также обрабатывает некоторую дополнительную логику уровня пользовательского интерфейса, такую как некоторые прокси-серверы данных, проблемы аутентификации, конфигурация кэша и т. д.;
-
Независимые кластеры, как упоминалось ранее, в основном предназначены для разделения рисков, например, если какие-то очень важные страницы на стороне альянса будут зависать, они будут напрямую влиять на торговый рынок, кластер часто создается независимо для рендеринга;
-
Статические ресурсы — это в основном файлы ресурсов, содержащие основные материалы и т. д., в основном статические ресурсы, такие как сценарии, стили, изображения и т. д.;
-
Наш прикладной уровень также будет служить исходным сайтом CDN. С другой стороны, у нас также есть большая доля запросов на рендеринг страниц в реальном времени, а рендеринг в реальном времени также повысит гибкость бизнеса. Например, сцена ABTest часто дополняется рендерингом в реальном времени;
-
Уровень доступа в основном предназначен для некоторых входов запросов для пользователей;
Затем на нижней правой полке мы предельно упростили всю архитектурную схему, то есть производство, транспортировку и потребление. сосредоточимся на следующем: Разверните модуль под.
Решение для массового развертывания материалов
Прежде всего, почему возникает проблема с развертыванием, напрямую загружать статические ресурсы страницы и компонента в CDN, а затем импортировать интерфейс? Это действительно метод, однако сценарии строительных услуг и требования со стороны Alimama намного сложнее, чем это.Большая часть внутренних страниц рендеринга в реальном времени, и многие данные интерфейса являются динамическими и отображаются на серверная сторона для удовлетворения первых требований.Некоторые требования по оптимизации производительности, отображаемые непосредственно на экране, в дополнение к эффекту выпуска в реальном времени, также необходимо учитывать, а также такие эксперименты, как ABTest; в основном, с точки зрения развития бизнеса и технологии, мощный модуль развертывания предоставляет больше возможностей.
Что касается текущей ситуации в нашем бизнесе, то, во-первых, мы видим, что масштаб очень большой, и страниц уже 200W+, кроме того, каждый месяц будет добавляться большое количество новых бизнесов, и если бизнес продолжает расти, он может расти еще быстрее.
Представьте себе, что после того, как общий масштаб роста материала вырос до определенного уровня, система развертывания не может его поддерживать и нуждается в перестройке, а затем приходится решать проблемы переноса данных и проверки миллионов страниц, поэтому эта логистическая гарантия для материала транспорт - проблема долгосрочная, на самом деле важнее.
Давайте сначала проанализируем проблемы, с которыми сталкивается модуль развертывания, затем представим процесс эволюции нашего модуля развертывания и, наконец, обсудим реализацию решения для массового развертывания материалов.
Основная проблема развертывания модулей
Сначала разберем проблемы, с которыми сталкивается модуль развертывания.Конечно, основная проблема в том, что можно добиться материального толчка.Если этого нельзя добиться, то это нельзя назвать развертыванием.Кроме того, я обычно перечисляю другие основные проблемы:
Расширение масштаба. Как правило, создание платформы занимает много времени. Проблема расширения масштаба может быть неизбежной. Различные факторы делают ее проблемой, которую необходимо учитывать. В конце концов, рост бизнеса и спрос всегда непредсказуемы. рассматриваться;
Развертывание кластера здесь в основном относится к некоторым вопросам эксплуатации, обслуживания и конфигурации кластера, как управлять материалами в кластере обслуживающей машины, как сосредоточиться на одном кластере, чтобы обеспечить стабильность ключевых предприятий, как гарантировать, что влияние одного бизнес не влияет на другие бизнесы, расширение кластера и т. д. Как эксплуатация и техническое обслуживание позволяют массовым материалам следовать за ними и т. д.;
Гарантия стабильности, как избежать катастрофических последствий, когда различные ошибки, внесенные в ежедневную разработку, приводят к проблемам в развертывании и проталкивании, если такие службы, как зависимое хранилище, приостановлены, может ли кластер по-прежнему предоставлять услуги;
Защита безопасности, как избежать влияния незаконных запросов на систему и т.д.
Конечно, есть еще много проблем, с которыми сталкивается развертывание, и давайте начнем с этих типичных проблем для дальнейшего обсуждения.
Доступные базовые инструменты
Итак, перед официальным стартом мы должны завершить разработку модуля развертывания Какие инструменты доступны?
Во-первых, когда дело доходит до доступа к сообщениям, в основном существует промежуточное программное обеспечение для сообщений. Alibaba в основном использует metaq, который может обеспечить запуск сообщений по порядку; другой фактически является инструментом публикации конфигурации. Alibaba является бриллиантом. Все подписанные кластеры будут уведомлены. Существуют некоторые различия в концепции и поведении Metaq — это промежуточное программное обеспечение для сообщений, которое, естественно, хорошо справляется с обработкой сообщений Diamond — это просто инструмент для публикации конфигурации Способен получать сообщения
Во-вторых, постоянство, такое как Redis, tair также является хранилищем nosql, аналогичным Redis, и mysql также является доступным вариантом. Еще сервис хранения файлов.Али сторона в основном oss.
В-третьих, с точки зрения реализации кода, яйцо на основе Node является хорошим базовым фреймворком, его экология плагинов охватывает все эти инструменты, а также легко реализовать некоторые плагины самостоятельно, а его механизм процессов, который - это режим процесса агента, и несколько рабочих процессов также могут взаимодействовать между процессами и т. д.
Эволюция модуля развертывания
Затем, на основе этих основных инструментов в сочетании с эволюцией нашего решения по развертыванию, мы предоставим поэтапный анализ и решение по развертыванию.В целом, решение по развертыванию Alimama прошло три этапа разработки:
- Самый простой и примитивный push and download
- Небольшое решение для синхронизации файлов
- И окончательный план массового развертывания материалов
Рассмотрим подробно ниже
Самые ранние решения для отправки и загрузки
Давным-давно мы реализовали два простых и грубых метода развертывания, в то время контейнерная технология Docker еще не была популярна, а egg еще находился в стадии разработки.
Эту реализацию развертывания можно описать одним предложением: создайте платформу для публикации широковещательных сообщений metaq, и после того, как кластер рендеринга получит сообщение, он уведомит процесс рендеринга о загрузке файлов из службы хранилища файлов. Простое и грубое решение проблемы развертывания, но в чем проблемы?
- В то время, когда нам нужно было расширить систему, мы могли только упаковать каталог материалов, а затем сбросить его.После расширения машины загрузить его на машину для распаковки, а затем выполнить самопроверку.Процесс проверки в основном осуществляется посредством воспроизведения трафика.
- Позже группа стала продвигать технологию виртуального контейнера Docker, и ежедневный запуск тоже стал проблемой, ведь каждое развертывание Docker похоже на переустановку системы, а диск по сути переобновляется.Конечно, это на самом деле много К счастью, с помощью зависания Docker Volume Загрузка каталога временно решила проблему.
В принципе, на данный момент, кроме решения проблемы с развертыванием push, не решены другие крупные проблемы, давайте сравним их по порядку:
- Расширение масштаба, очевидно, нет связанной концепции, в основном он хранится на диске, и проблема будет становиться все более и более серьезной по мере постепенного увеличения масштаба;
- Развертывание кластера, как упоминалось выше, в основном решается человеческой плотью;
- Стабильность гарантирована, а понятия стабильности в принципе нет, при потере файлов или других сбоях базовый запрос на эту страницу будет отброшен.
- Для защиты безопасности нет соответствующего решения для незаконных запросов.
Поэтому в целом это простое и грубое решение решает самую элементарную проблему развертывания и пуша, и не имеет других фич, но понятно, что это раннее решение.
Небольшое решение для синхронизации файлов
Это было и раньше, бизнес-сторона надеялась, что мы сможем лучше защитить физическое разделение ключевых бизнесов и других бизнесов, то есть они боялись, что неопределенные факторы в централизованном рендеринге повлияют на ключевые бизнесы; характерная черта из этих ключевых предприятий То есть общее количество страниц невелико.В ответ на этот спрос мы разработали набор решений для синхронизации файлов, подходящих для небольших страниц.
Основной принцип выполнения при развертывании:
- Что касается построения, то каждый раз, когда развертывание выпускается, измененные страницы сохраняются в OSS, и создается полная таблица информации о файлах, которая выпускается с помощью алмазного инструмента публикации конфигурации;
- На стороне рендеринга процесс агента получает уведомление о сообщении алмаза, затем извлекает информацию о файле изменения, а затем посредством серии сложных вычислений получает информацию о конкретной странице изменения, а затем загружает ее из OSS и развертывает. это локально;
- После завершения развертывания процесс рендеринга получает информацию об обновлении локального кэша через канал IPC, то есть межпроцессное взаимодействие;
Кроме того, при перезапуске машины или выполнении принудительного развертывания полная таблица сведений о файлах будет снова извлечена из ромба, будет выполнено полное развертывание, и после его завершения будет запущен доступ к трафику.Поскольку масштаб страницы равен 100 , в основном полная скорость развертывания Это также очень быстро, и приложение находится в сети и перезапускается плавно.
В этом решении мы также реализовали базовый механизм аварийного восстановления; общий принцип заключается в том, что перед выполнением развертывания содержимое страницы, развернутой в последний раз, записывается в резервную директорию на диске, чтобы в случае возникновения процесса развертывания Если есть проблема, процесс рендеринга все равно будет обращаться к резервному каталогу, чтобы прочитать последнюю страницу, а затем отобразить ее.
Итак, какие проблемы решает это решение?
- Расширение масштаба, нерешенное, это решение подходит только для сотен и тысяч страниц, потому что извлечение информации об изменениях после отправки изменений и полное развертывание каждого запуска приложения не позволяют выполнять крупномасштабную обработку;
- Развертывание кластера, решение и обычные операции по эксплуатации и обслуживанию кластера больше не требуют обработки человеческой плоти, и это решение может быть направлено на определенные кластеры целевым образом, обеспечивая гибкость для развития бизнеса;
- Гарантия стабильности, решение, механизм предварительного аварийного восстановления и перехода на более раннюю версию в определенной степени защищает недоступность страницы, вызванную неожиданными сбоями, а расчет изменения страницы в этом решении даже реализует развертывание в градациях серого;
- Защита безопасности, неразрешенная, если это незаконный запрос, в основном требуется дополнительная обработка аварийного восстановления, даже на один процесс больше, чем в предыдущем самом раннем решении.
После завершения разработки этой схемы она также накопила для нас определенный опыт, среди которого такие концепции дизайна, как устойчивость к стихийным бедствиям, дали много вдохновения для окончательной схемы, которая следует.
Окончательный план массового развертывания материалов
Позже, чтобы обеспечить долгосрочное развитие бизнеса, мы решили внедрить полный и надежный push-модуль массового развертывания, чтобы решить логистическую проблему построения нашей платформы.
Основные требования Подводя итог, можно сказать, что развертывание push — это базовая функция, кроме того:
- Материалы хранятся в OSS, и у материала может быть несколько исторических версий выпуска;
- Развертывание по требованию должно быть реализовано.Когда величина слишком велика, и нет соответствующего материала на локальном компьютере, развертывание выполняется по мере необходимости;
- Иметь устойчивость к стихийным бедствиям и возможность понижения версии;
- иметь возможности защиты безопасности;
#### Создание базовой модели размещения материалов
Чтобы решить эту проблему, вы можете сначала попытаться построить базовую концепцию модели:
- Таблица маршрутизации, таблица запросов адресов OSS материала, может запрашивать конкретный адрес хранения файла материала в соответствии с материалом материала;
- Горячее развертывание, триггерный механизм развертывания по запросу, динамически реализует действия по развертыванию, когда требуется материал.
- Холодное развертывание, активный триггерный механизм развертывания, то есть традиционный режим push и развертывания;
- Аварийное восстановление и переход на более раннюю версию, возможность аварийного восстановления и перехода на более раннюю версию также должны быть предоставлены на уровне развертывания, а услуги должны предоставляться как минимум, но службы не должны быть приостановлены в максимально возможной степени;
- Черный список, при поступлении нелегальных запросов на уровне развертывания может выполняться базовая защита, чтобы избежать лишнего потребления ресурсов, особенно в случае горячего развертывания и механизмов аварийного восстановления, т.к. их выполнение на самом деле немного ресурсоемко;
Анализ конкретных планов развертывания
При разработке этих базовых концепций реализуется схема развертывания, показанная на рисунке выше, которая имеет пять сюжетных линий:
Первая линия - построить конец, отвечающий за производство и развертывание.
- Когда строительство материала завершено, строительный терминал напрямую сохраняет материал в OSS;
- Рассчитать некоторые значения характеристик в соответствии с некоторой информацией о материалах и сохранить отношение отображения между значениями характеристик и адресами файлов OSS в таблице маршрутизации;
- Сообщение о развертывании передается процессу агента на стороне рендеринга через промежуточное программное обеспечение сообщений.
Вторая строка — это холодное развертывание стороны рендеринга.
- Процесс агента получает сообщение о развертывании, вычисляет некоторые значения характеристик на основе информации о материале, а затем запрашивает OSS-адрес материала в таблице маршрутизации;
- После запроса адреса OSS извлеките и разверните материалы на локальном диске для формирования дискового кэша, а также создайте несколько резервных копий для аварийного восстановления;
- После завершения обработки файла уведомить процесс рендеринга об изменениях развертывания по каналу IPC;
- Процесс рендеринга получает уведомление, считывает последний материал с локального диска и обновляет его в своем кэше памяти, тем самым завершая обновление холодного развертывания;
Третья строка, горячее развертывание стороны рендеринга, имеет действие развертывания, запускаемое внешним запросом.
- Когда поступает внешний запрос, попытайтесь получить его из кеша памяти и кеша диска в соответствии с информацией о запросе, и, если ни один из них не попадает, попробуйте выполнить действие горячего развертывания, что является концепцией развертывания по требованию;
- Рассчитайте значение характеристики материала этого запроса в соответствии с запрошенной информацией, а затем перейдите к таблице маршрутизации, чтобы запросить адрес OSS материала;
- Получается OSS-адрес материала, и процесс рендеринга инициирует горячее развертывание, обновляет локальную память и дисковый кеш, а также создает резервную копию для аварийного восстановления и т. д.;
Четвертая линия, перехват черного списка
- Когда запрос является незаконным, очевидно, что горячее развертывание и переход на более раннюю версию аварийного восстановления не будут успешными;
- Затем после завершения неудачного горячего развертывания заблокируйте запрошенные функции;
- Когда тот же незаконный запрос поступает в следующий раз, перехват может быть реализован напрямую, чтобы избежать ненужных действий по горячему развертыванию и т. д.;
- Тогда, если выполняется холодное развертывание, значения функций в черном списке все равно будут обновлены, зачем их нужно обновлять? Потому что, если страница сделала много запросов до того, как она была первоначально выпущена, она фактически будет заблокирована, потому что страница не может быть найдена.Однако, когда выполнение выпущено, соответствующий запрос стал легитимным, поэтому его необходимо обновить. черный список;
Пятая строка, основной принцип аварийного восстановления и понижения версии выглядит следующим образом.
- Ошибки часто неизбежны, такие как ошибки формата JSON и т. д., которые могут привести к сбою отображения страницы.Если эта страница оказывается очень важной, она часто подвержена трагедиям.
- Аварийное восстановление и переход на более раннюю версию обеспечат наилучшие возможные услуги, поскольку последняя развернутая страница, скорее всего, будет отображаться нормально, а модуль модуля аварийного восстановления попытается получить последний результат развертывания для рендеринга в случае сбоя обычного процесса;
Таким образом, это решение решает все поставленные проблемы.
- Расширение масштаба: хранение массивных материалов в основном представляет собой линейный рост за счет кэш-памяти, текущего диска, таблицы маршрутизации и хранилища файлов и т. д. Нет проблем поддерживать общее количество материалов на уровне 100 миллионов в соответствии с текущей емкостью хранилища. ;
- Развертывание кластера: как горячий, так и холодный режим развертывания можно рассматривать как развертывание по запросу. В основном материалы также следуют за кластером, поэтому нет необходимости беспокоиться о ежедневной эксплуатации и обслуживании кластера. Кроме того, также легко реализовать направленное развертывание. развертывание кластера push в соответствии с характеристиками материалов;
- Гарантия стабильности: механизм аварийного восстановления на уровне развертывания может обеспечить максимально возможное предоставление услуг и выиграть время для устранения сбоев.Конечно, будут и другие уровни механизмов аварийного восстановления, включая рендеринг;
- Защита безопасности: механизм черного списка также может эффективно блокировать незаконные запросы и обеспечивать стабильность кластера машин;
Логистическая система управления складом, аналогичная реальному времени
Все выглядит немного сложно, но на самом деле вы обнаружите, что все решение по развертыванию на самом деле представляет собой аналогичную систему складирования и логистики.Так случилось, что я также управлял и разрабатывал логистическую платформу раньше. Вот небольшое пояснение:
- Холодное развертывание - это фактически процесс заводского производства и транспортировки товаров.Когда товары поступают на склад супермаркета, администратор склада, то есть агент, обрабатывает, распределяет товары и управляет ими;
- Ответ на запрос, когда клиенты совершают сверхурочные покупки, они могут искать необходимые продукты на разных полках в соответствии с категорией продуктов, а полки аналогичны нашему кешу памяти.Локальный склад — это локальный дисковый кеш, а удаленный склад — это маршрутизация и хранение Удаленное хранение файлов;
- Горячее развертывание, когда клиент не может найти нужный продукт на полке, менеджер полки или продавец, то есть модуль горячего развертывания, отправится на склад, чтобы запланировать поставку и поставить его на полку.
- Перехват черного списка, если покупатель искал странные вещи при входе в магазин и чувствует себя полным злонамеренности, сработает система безопасности, и когда тот же покупатель придет в следующий раз, ему будет напрямую отказано во входе.
- Черный список обновляется.Возможно заказчик опережает время и хочет купить еще не произведенные продукты.В это время он заблокирован.При поставке последних продуктов методом холодного развертывания система безопасности будет обновлена, и в следующий раз, когда покупатель войдет в магазин, система безопасности будет обновлена.
Легко ли это понять по такой аналогии?На самом деле, мы изначально не проектировали модуль развертывания на основе системы логистики, но после завершения проектирования развертывания и его реализации мы обнаружили, что он очень похож на систему логистики. Следует сказать, что это не случайно.
Онлайн-реализация плана развертывания
Давайте взглянем на реализацию этой системы развертывания на нашей линии.
В левом верхнем углу можно увидеть перехват черного списка путей, многие запросы на атаки в основном непрерывны.
В правом верхнем углу черный список перехват страницы.Как вы можете видеть на этой картинке, внезапно поступило большое количество нелегальных запросов, которые все были заблокированы модулем черного списка.
Ниже приведена реализация аварийного восстановления.Ежедневная ситуация вызвана некоторыми незаконными и незаконными запросами.Аварийное восстановление также является относительно ресурсоемким.Здесь также можно увидеть значение перехвата черного списка.
Здесь показан процесс заполнения кэша памяти, когда система подключается к сети.
На рисунке выше показано, что кэш памяти заполняется, а кривая растет. На рисунке ниже показана конкретная операция заполнения кеша памяти в тот же период времени. На маленьком рисунке в середине показано среднее потребление времени сбора данных в одновременно, включая горячее развертывание и чтение памяти, выборку, чтение с диска и т. д.
Вот небольшое пояснение.Синяя кривая — это среднее время чтения ABTest, которое в основном находится в пределах 0,3 мс, а желтая кривая — среднее время чтения страницы.В пределах 0,5 мс одно горячее развертывание занимает много времени. ., но средняя задержка загрузки на самом деле очень низкая, что в основном составляет все время рендеринга страницы, а временем чтения материала модуля развертывания можно пренебречь.
Проблемы, возникающие после выхода в интернет
Конечно, мы столкнулись и с некоторыми проблемами, когда завершили разработку и запуск, вот две из них, напрямую связанные с Node.
Во-первых, примерно через три-четыре дня после запуска первой версии ЦП многих машин на линии внезапно переполнялся, а затем перезапускал машину, и она восстанавливалась.Через несколько дней та же проблема возникала снова. .
В то время я проверил много логики выполнения и не нашел никаких проблем Затем я наблюдал за системными индикаторами и обнаружил, что эта проблема возникает всякий раз, когда большое количество процессов в машине занимает 1,2% от общей памяти. используя 32-ядерную машину, поэтому, вероятно, появление 35% общей памяти, интуитивно догадавшись, что это может быть связано с использованием памяти.
В итоге была обнаружена проблема в том, что на количество активных ежедневных страниц на тот момент выделялся относительно большой кеш памяти, в процессе заливки материалов достигался порог принудительной сборки мусора Node, что приводило к срабатыванию Full- Проблема с GC Исправление заключается в публикации с меньшим значением параметра memcache, и после этого проблема исчезла.
Конечно, объем памяти уменьшается, что незначительно влияет на общее время сбора данных, базовый прирост находится в пределах 0,1 мс, так что в целом проблем нет.
Конечно, позже выяснилось, что платформа alinode также имеет отличный инструмент анализа проблем GC.Из-за времени, исходный материал не может быть найден.Картинка в левом нижнем углу является еще одним примером ситуации GC, которая в основном связанные с использованием памяти, и показаны в качестве примера.
Вторая проблема заключается в том, что после запуска первой версии большое количество Node-процессов внезапно завершилось после периода выполнения, и было сгенерировано много файлов Core. для просмотра стека ошибок журнала; Перезапустите проблемную машину, но она появится вероятностно после запуска в течение определенного периода времени, и с вероятностной проблемой все еще трудно справиться.
После тщательной проверки журнала я подозреваю, что это вызвано использованием IPC для передачи больших файлов.Предположение состоит в том, что передача больших файлов может занимать пространство памяти встроенного потокового объекта, заставляя Node выполнять некоторые операции и напрямую прервите процесс, т.к. первоначальная версия реализации идет через IPC для передачи самого последнего материала.
Срочное преобразование - сброс материалов через диск.IPC уведомляет процесс рендеринга о необходимости чтения последних материалов с локального диска.После завершения преобразования эта проблема исчезает.
Перечислены некоторые практические случаи реализации
Давайте поговорим о нескольких случаях онлайн-операций: так много механизмов спроектировано так, чтобы быть действительно полезными, или они перепроектированы?
Случай аварийного восстановления
Прежде всего, первый случай - это случай, когда происходит аварийное восстановление. Этот реальный случай работы связан с ошибкой в модуле развертывания, из-за которой конфигурация страницы не может быть нормально получена во время рендеринга. Страницы все в порядке. , так как сработал даунгрейд, а для рендеринга использовалась последняя конфигурация страницы.После расследования выяснилось, что была проблема с деплоем и исполнением, после чего она была срочно исправлена перед выходом в онлайн.
Интересно в этом случае то, что хотя многие серверы действительно зависали, за исключением нескольких разработчиков, которые получили тревожное уведомление, другие люди вообще не могли это воспринять и в принципе не обнаружили никаких проблем.В противном случае это время может быть крупный сбой, т.к. это независимый кластер рендеринга, несущий ключевой бизнес.
Дело о перехвате
Это дело было накануне большой акции в каком-то году, и интернет был фактически заблокирован.Вы должны знать, что в это время очень сложно публиковать контент и внедрять онлайн-изменения.В это время большое количество нелегальных Внезапно были получены запросы, что привело к срабатыванию черного списка.Перехваченное уведомление о тревоге, модуль черного списка успешно идентифицирует эти незаконные запросы и осуществляет перехват.
Таким образом, конечным результатом является то, что хотя было получено много неизвестных запросов, за исключением уведомления о тревоге, весь кластер рендеринга работает очень гладко, а системные параметры не колеблются.
Корпус расширения
Точно так же схема развертывания также является масштабируемой и может быть передана в кластер направленного рендеринга в соответствии с характеристиками материала.Мы используем ее для замены ранее разработанной схемы развертывания независимых кластеров рендеринга для небольших страниц.Конечно, страница также само собой разумеется, и в настоящее время полностью поддерживает все задачи развертывания независимых выделенных кластеров рендеринга.
Суммировать
В конце концов, как я уже говорил, модуль развертывания на самом деле является логистической поддержкой построения системы.Весь план внедрения имеет большое сходство с управлением материалами и складом в реальной жизни.Можно только сказать, что вещи часто скрыты между Существует также связь.
После решения проблемы материально-технического обеспечения наша строительная бригада не беспокоится об этом и может сосредоточиться на проектировании и разработке других схем строительства.
коммерческое время
В последнее рекламное время мы являемся креативной фронтенд-командой Центра маркетинговых исследований и опыта Alimama.Хотя в команде не так много людей, у нас много тяжеловесных и очевидных продуктов.На основе JS мы сделали много невероятных вещей ! Кроме того, мы также являемся отделом доходов Ali Group, мы набираем людей, база доступна в Пекине и Ханчжоу!
Если вы хотите работать вместе, пожалуйста, свяжитесь со мной!