Эта статья Заключительная глава серии технологических туров, посвященных 25-летию QQ,существуют в первых двух статьях,Мы используем《QQ 25-летний технологический тур 丨Свежий дизайн, основанный на технологических исследованиях, для создания легкого и простого QQ9 》и«QQ 9 — это «тупо быстро, тупо быстро»? ! Позвольте мне показать вам технические секреты, стоящие за этим».как заголовок,Представляем QQ Исследование команды в области визуальной доработки и оптимизации производительности. Эта статья будет посвящена мобильным телефонам. QQ Техническая история обновления технической архитектуры.
После более чем 20 лет разработки QQ Mobile продолжал добавлять функции, накапливать код, а его архитектура становилась все более раздутой, что влияло на эффективность разработки совместной команды и создавало большие риски для пользовательского опыта и стабильности качества. Поэтому QQ Mobile. остро нуждается в техническом обновлении. Однако в отрасли редко удается обновить архитектуру такого огромного проекта. Трудности и проблемы, с которыми сталкивается обновление мобильной архитектуры QQ, очень огромны. проблемы проекта, результаты проекта и т. д. .
За последние 20 лет QQ Mobile превратился из простого инструмента для обмена мгновенными сообщениями в платформу, предоставляющую множество услуг, таких как пространства, каналы, короткие видеоролики, супершоу и дополнительные услуги. По мере того как бизнес становится все более и более сложным, первоначально разработанная техническая архитектура становится все более непригодной, а связь между бизнесами становится все более серьезной. Часто одна проблема решается, а возникает N проблем, и проблему невозможно исправить. ., долг по коду накапливается, и бремя истории словно гора лежит перед каждым участником мобильного QQ-проекта.
В 2020 году мы начали модернизировать архитектуру. Учитывая очень большую сложность бизнеса и размер кода Mobile QQ, рабочая нагрузка по обновлению архитектуры оценивалась как ошеломляющая, поэтому мы приняли стратегию поэтапного и постепенного развития для обновления архитектуры. В целом график обновления архитектуры Mobile QQ выглядит следующим образом:
2.1 Проектирование архитектуры разделения и реконструкции
Хотя исторический багаж подобен большой горе, у участников проекта Mobile QQ также есть воля и решимость свернуть горы. В 2020 году Mobile QQ запустила проект обновления технической архитектуры под названием «Промышленная практика», который ознаменовал первый случай, когда проект Mobile QQ систематически проводил обновления границ бизнеса, разъединения и реконструкции.
Mobile Q старая архитектура
Как видно из приведенного рисунка, старая архитектура хоть и является модульной и подключаемой, но имеет следующие недостатки:
В ответ на вышеперечисленные недостатки проект мобильного QQ был переработан. В новой архитектуре модули разделены по бизнес-моделям. Бизнес-модули отделены друг от друга, а связь между ними осуществляется посредством интерфейсов и маршрутизации. При этом он разделен по иерархической схеме. Уровни зависят сверху вниз. Модули верхнего уровня могут опираться на модули нижнего уровня, но модули нижнего уровня не могут быть обратно зависимыми от верхних. Модули уровня.
Новая архитектура Mobile Q
Основные преимущества новой архитектуры:
2.2 Эволюция разделения и реконструкции
Различные направления проекта мобильного QQ очень зависят друг от друга. Разъединение и реконструкция не могут быть достигнуты в одночасье. Цели необходимо ставить поэтапно и оптимизировать шаг за шагом. После разбора развязка и реконструкция проекта мобильного QQ делится на три этапа:
Разделение примерно 3 миллионов строк основного кода в основном завершено. В общей сложности было отделено около 30 базовых модулей и 40 базовых компонентов, а также основные бизнес-модули. При разработке новых функций, поскольку реализация интерфейса и службы изолированы, код, зависящий от интерфейса, больше не будет жестко связан.
Цель: продолжить разделение бизнес-модулей и создать механизм предотвращения ухудшения качества.
Результаты:
Цель: дальнейшее усовершенствование основных модулей и компонентов и реализация субинжиниринга.
Результаты:
2.3 Преимущества разделения и рефакторинга
На основе реконструкции были разобраны зависимости, повышен уровень модульности в три этапа, улучшена скорость компиляции и эффективность НИОКР, а время компиляции конвейера увеличено на 50%. Конфликты кода также были значительно улучшены. Сравнивая данные до и после рефакторинга, количество конфликтующих файлов сократилось на 60%, а количество конфликтов — на 30%, что значительно повысило эффективность разработки.
После успешного первого шага реформы мы обратили внимание на проблему фрагментации версий, с которой столкнулся мобильный QQ. Различные цели развиваются независимо, образуя так называемую структуру «дымохода», в которой повторное использование кода крайне мало. Такая структура приводит к таким проблемам, как несогласованность работы нескольких терминалов, неравномерность ведения бизнеса внутри терминала, а также высокие затраты на разработку и обслуживание каждого обновления версии. Чтобы решить эти проблемы и добиться прорыва в улучшении пользовательского опыта, оптимизации производительности и повышении эффективности исследований и разработок, нам необходимо глубоко задуматься. Именно эти неотложные потребности и проблемы побудили нас начать второй этап реформы – проект обновления мобильной архитектуры QQ NT.
В начале проектирования архитектуры NT мы твердо верили, что нам не следует продолжать исправлять ситуацию, а следует принять новейшие и разумные технические концепции, отказавшись от простого метода внесения исправлений. Эта модернизация — это не только кардинальная технологическая трансформация, но и продуманная технологическая трансформация. Мы придаем большое значение формулированию четкого и осуществимого пути реализации, не вызывая крупномасштабных потрясений в архитектуре. Целью является достижение более высокой эффективности работы и результатов при меньших затратах рабочей силы, обеспечивая эффективность и надежность в процессе модернизации. Такой подход не только обеспечивает плавное развитие проекта, но и закладывает прочную основу для будущего развития технологий и итераций.
3.1 Трудности реализации архитектуры NT
Из-за долгой истории QQ Mobile и большой базы пользователей проект продемонстрировал значительную сложность как на уровне бизнеса, так и на уровне пользователей. В частности, проблемы на уровне проекта включают в себя:
Проблемы на уровне пользователя включают в себя:
Столкнувшись с этими сложностями, основные трудности проекта в основном сосредоточены на следующих трех аспектах:
Эти проблемы не только иллюстрируют сложность проекта обновления архитектуры мобильного телефона QQ NT, но и доказывают нашу решимость противостоять беспрецедентным техническим трудностям.
3.2 Проектирование архитектуры NT
Чтобы добиться обновления и унификации архитектуры, команда проекта сначала использовала C++ для разработки кросс-платформенного уровня ядра с основными функциями QQ IM: интеграция основной бизнес-логики IM (логика сообщений, такая как друзья, группы, каналы и т. д.), логика цепочки данных и взаимосвязей, изображения, голос и видео и т. д. Логика приемопередатчика Rich Media, логика аудио и видео в реальном времени и т. д.), общие компоненты QQ (база данных, кодек протокола, сетевая передача и т. д.), а также поток/сеть/IO и другие общие модули управления ресурсами и части инкапсуляции операционной системы, которые являются собственными для реализации каждой платформы и унифицированы вплоть до C++. Межплатформенный уровень.
Чтобы контролировать риски качества проекта, к кросс-платформенному ядру NT сначала подключается относительно небольшое количество пользователей, а настольная часть, которая имеет высокую степень срочности выполнения функций, полностью переписана с использованием новой архитектуры.
После успешного завершения функциональной проверки и тестирования качества на десктопной стороне мы начали миграцию на мобильную часть и успешно завершили интеграцию платформ iOS и Android.
Конечно, мобильный доступ далеко не так прост, как показано на рисунке. Решения и основные процессы будут представлены далее.
3.3 Перезапись и обновление полной ссылки IM
Базовым технологическим обновлением QQ, основанным на новой архитектуре NT, является обновление полного канала IM. Источники данных IM-сообщений сложны и имеют тяжелую историческую нагрузку. Первая трудность, возникающая в процессе обновления, — это преобразование данных и перенос существующих данных в новую версию.
Поэтому в первую очередь необходимо оптимизировать обмен мгновенными сообщениями. Основываясь на соображениях ценности для пользователя и мышлении с нуля, команда проекта завершила унификацию форматов сообщений и тщательно оптимизировала типы сообщений и диалогов, заложив основу для долгосрочной стабильности сообщений QQ.
Основываясь на унифицированных форматах и оптимизированных типах для всех терминалов, мы начали разрабатывать новую клиентскую базу данных, унифицированную для всех платформ, используя комплексное оптимальное решение по размеру, производительности и безопасности, а затем обдумали, как плавно обновить данные из старая БД в новую БД. Мобильный терминал отличается от настольного терминала. Активные пользователи находятся в сети круглый год. Размер файлов БД локальных текстовых сообщений на некоторых мобильных телефонах превышает 10 ГБ. Вместе с мультимедийными данными, файлами и т. д. общий объем данных превышает 100 ГБ. Кроме того, мобильный терминал имеет небольшой объем памяти и энергопотребление. Из-за различных ограничений, таких как чувствительность и процессы фонового уничтожения, необходимо разработать тщательную стратегию обновления, чтобы защитить основные данные пользователей от потери.
Основные пункты плана:
Благодаря хорошо продуманной стратегии обновления, множеству раундов внутренних отчислений, внешнему масштабированию со 100-го уровня, всестороннему мониторингу и стратегии сокрытия, гарантирующей, что никакая информация не будет потеряна. Наконец, в сочетании с данными мониторинга и данными отзывов пользователей, был завершен плавный перенос всех данных всех пользователей в новую БД.
3.4 Оптимизация и улучшение основных функций
Не только новости: в процессе переписывания и обновления архитектуры NT основные функции QQ также были более тщательно реконструированы. Собственные функции мобильного QQ были крупномасштабно разделены, а общие части были оптимизированы и интегрированы. в унифицированные собственные компоненты NT-Runtime (служба компонентов NT и уровень инфраструктуры). На основе реконструированной архитектуры также полностью оптимизирована производительность.
Во-первых, это оптимизация основных модулей, связанных с сообщениями. Логика сообщений переносится на кросс-платформенный язык C++, что также способствует обновлению архитектуры на верхнем уровне. Возьмем в качестве примера окно чата (AIO), основанное на идеях дизайна новой архитектуры потока данных + предварительная загрузка данных + распараллеливание логики пользовательского интерфейса, одностороннее управление потоком данных, асинхронная загрузка и рендеринг. Системные ресурсы полностью предоставляются. Улучшен список сообщений AIO и конечный показатель производительности. Очевидно, что просмотр, переход и перемещение сообщений в AIO происходят плавно и плавно. План оптимизации основных технологий:
Другие основные сцены QQ, такие как страница списка сообщений, отправка и получение сообщений и мультимедиа, просмотр изображений и видео и т. д., также оптимизируются с использованием того же пути, а конечная производительность значительно улучшается.
При разработке мобильного QQ на протяжении более 20 лет постоянное расширение функций приложения и постоянный рост объема кода накопили огромный технический долг, который лег тяжелым бременем на исходную архитектуру. Благодаря серии архитектурных изменений и технологических обновлений QQ Mobile успешно превратилась из раздутой в модульную, эффективную и стабильную систему.
Клиентская архитектура была постепенно обновлена с архитектуры дымохода каждого терминала до архитектуры NT для многотерминального и кроссплатформенного повторного использования, что снижает трудозатраты на обслуживание нескольких терминалов, повышает эффективность полнофункциональной разработки QQ и закладывает прочную основу для дальнейшего развития QQ и внедрения новых технологий.
Заглядывая в будущее, QQ продолжит двигаться вперед по пути технологических инноваций на основе архитектуры NT, продолжит оптимизацию архитектуры и обновление технологий, а также предоставит пользователям более плавную и стабильную работу с продуктом.
-End-
Оригинальный автор | Хэ Цзиньюань
Расскажите мне о том, как QQ вырос вместе с вами. Есть ли какие-нибудь интересные истории, которые вас впечатлили?