Автор | Го Вэньфэй
Редактор | Цай Фанфанг
В 2021 году общий объем MAU продуктов ByteDance превысил 1,9 миллиарда. В контексте продуктового бизнеса, представленного Douyin, Toutiao, Xigua Video и др., мощная система рекомендаций особенно важна. Flink предоставляет очень мощные модули SQL и модули вычислений с отслеживанием состояния. В настоящее время в сценарии рекомендаций по байтам функции простого подсчета в реальном времени, функции подсчета окон и функции последовательности полностью перенесены в решение Flink SQL. Объединив возможности вычислений Flink SQL и Flink с отслеживанием состояния, мы создаем универсальную унифицированную архитектуру вычислений с базовыми функциями следующего поколения, надеясь эффективно поддерживать создание часто используемых базовых функций с отслеживанием и без сохранения состояния.
Деловой фон
Для таких продуктов ByteDance, как Toutiao, Douyin и Xigua Video, рекомендации, основанные на потоках новостей и краткосрочных эффектах, являются основными бизнес-сценариями. Основным топливом рекомендательных систем являются функции, и эффективное создание базовых функций имеет решающее значение для итерации систем бизнес-рекомендаций.
Основные бизнес-сценарии
в настоящий момент Рекомендуемые сценарии ByteDanceБазаособенностьиз Статус производства“Пусть расцветают сто цветов”。Оффлайнособенностьвычислитьизосновной режим Все прошло Потребление Kafka、BMQ、Hive、HDFS、Abase、RPC и другие источники данных, основанные на Spark、Flink Механизм вычислений выполняет расчеты функций, а затем записывает результаты функций в онлайн- и автономное хранилище. Различные типы вычислений базовых функций разбросаны по разным сервисам, им не хватает бизнес-абстракции, что приводит к увеличению затрат на эксплуатацию и обслуживание, а также к проблемам со стабильностью.
Что еще более важно, отсутствие единой платформы для создания базовых функций делает скорость итерации разработки бизнес-функций и неудобной их обслуживание. Например, бизнес-сторонам необходимо самостоятельно выполнять большое количество автономных задач, звеньям по производству функций не хватает мониторинга, и они не могут удовлетворить растущие потребности бизнеса.
В масштабах бизнеса Byte построение единой системы создания функций в реальном времени сталкивается с серьезными проблемами, в основном по четырем аспектам:
огромный бизнес:Тик Ток、заголовки、арбуз、вулканждатьпродуктизданныешкала Может достигать среднего дневного значения PB уровень. Например, в сценарии Доуин в вечерний час пик Feed Миллионы просмотров QPS,Клиент сообщает строку пользователядляданныеДо десятков миллионов IOPS. Бизнес-сторона ожидает, что функциональные задачи могут выполняться непрерывно и использоваться в любое время. lag и т. д., что требует очень высокой стабильности при создании функций.
Высокие требования к функциям в режиме реального времени:прямая трансляция、Электронная коммерция、короткое видеодляпредставлятьиз Рекомендуемый сценарий,для гарантирует рекомендуемые результаты,Своевременность автономного создания функций реального времени должна быть нормальной и стабильной на минутном уровне.
Лучше из-за масштабируемости и гибкости:вместе сбизнес Сцены продолжают усложняться,особенностьнуждаться Дажедля Гибкий。Из статистики、последовательность、свойствотипизособенность Производство,В связи с необходимостью гибкого поддержания оконных функций, многомерных функций и т. д.,бизнеспартийные нуждыособенность Китай и Тайвань могутподдерживатьпостепенно выведено изизновыйособенностьтипинуждаться。
Быстрая бизнес-итерация:особенность Средняя платформапредоставил Длябизнесиз DSL Необходимо достаточное количество сценариев, а ссылка на производство функций позволяет бизнесу писать как можно меньше кода. Базовый вычислительный механизм и механизм хранения данных полностью прозрачны для бизнеса, что полностью освобождает от бремени бизнес-вычислений, выбора и настройки хранилища. полностью реализуя крупномасштабное производство основных функций в режиме реального времени, постоянно повышая производительность функций;
итерационный процесс эволюции
В процессе взрывного роста байтового бизнеса, чтобы удовлетворить потребности различных бизнес-функций, сценарии рекомендаций привели к появлению множества функциональных услуг. Эти услуги лучше поддерживают быстрое развитие бизнеса в конкретных бизнес-сценариях и исторических условиях. Общий процесс выглядит следующим образом:
Рекомендуемый сценарий развития сервиса объектов
Среди них важным узлом является начало 2020 года. Мы начали внедрять технологические системы Flink SQL и Flink State в производство функций и постепенно внедряли их в таких сценариях, как системы подсчета функций, объединение выборок для обучения моделей и оконные функции для изучения. новое поколение художественного производства Идея плана.
Системная архитектура нового поколения
В сочетании с вышеуказанным бизнес-опытом мы основываемся на Flink SQL и Flink иметьсостояниевычислить能力重новый设计了новыйодинв реальном времениособенностьвычислитьплан。новый планиз Позиционирование:решать Базаособенностьизвычислитьионлайн Обслуживание, предоставление более абстрактного бизнес-уровня базовых функций. DSL。 На вычислительном уровне мы основываемся на Flink SQL Гибкие выразительные возможности обработки данных и Flink State Государственные хранилища вычислительных мощностей и других технологий поддерживают различные комплексные оконные вычисления. Значительно сократить производственный цикл Бизнес База, повысить стабильность выходного звена. В новой Архитектуре мы будем Ссылка на создание функций разделена на извлечение источника данных. / Три этапа сращивания, хранения состояния и расчета, Флинк SQL Полные функции обработки данных, потокового сращивания, Flink State Хранение промежуточного состояния для завершения расчета функции.
Функции с сохранением состояния — это очень важный тип функций, наиболее часто используемые из которых — это функции с различными окнами, например статистика последних событий. 5 минутное воспроизведение видео VV ждать。дляокнотипизособенность在字节内部иметьодиннекоторые на основехранилищедвигательизплан,Общая идея заключается в том,“Легкий офлайн тяжелый онлайн”,То есть хранилище состояния окна и расчет агрегации объектов выполняются на уровне хранилища ионлайн. Автономные потоки данных отвечают за базовую фильтрацию и запись данных.,Подробности оффлайнданные Разделить агрегацию по временихранилище(Похоже на: micro пакетный), большая часть базового хранилища KV Хранилище, или специально оптимизированный механизм хранения, выполняет сложную логику расчета агрегирования окон на онлайн-уровне. После поступления каждого запроса онлайн-уровень извлекает подробные данные из уровня хранения для агрегирующих вычислений.
наш новыйизрешать Идея в том,“Легкий онлайн тяжелый оффлайн”,То есть ручка тяжелееиз Подробности временного интервала Все расчеты агрегации окон состояния хранилища размещаются в автономном слое. Проходы агрегирования результатов окна Механизм запуска офлайн-окна Выполнено, выложим результаты функции подтолкнуть к онлайн KV хранилище. Онлайн-модуль очень легкий и отвечает только за простой изонлайн. обслуживание, значительно упрощая сложность онлайн-слоя архитектуры. В автономном состоянии хранилища. мы в основном полагаемся на Flink предоставил Собственный механизм хранения состояний RocksDB,充分利用Оффлайнвычислить Кластер локальныйиз SSD Дисковые ресурсы, значительно сокращающие онлайн KV Нехватка ресурсов хранилища.
Для длинных оконных элементов (7 функция окна дня или выше), из-за Flink Процесс возврата подробных данных уровня состояния, Flink Embedded состояниехранилищедвигатель没иметь提供特别好извнешнийданныемеханизм рециркуляции(Или нецелесообразно это делать)。поэтомудля Этот вид“Статус холодного запуска”сцена,Мы представляем хранилище централизации как нижний уровень хранилища и среду хранения.,Целое Hybrid архитектура. Например 7 Статус в течение суток хранится локально SSD,7~30 Ежедневный статус сохраняется в централизованном хранилище, а отслеживание автономных данных может быть очень удобно записано в централизованное хранилище.
Помимо оконных функций, этот механизм также применим к другим типам функций с отслеживанием состояния (например, к функциям последовательности).
Система классификации объектов в реальном времени
общая архитектура
Характеристики с окнами, такие как количество лайков на видео Douyin за последний 1 час (скользящее окно), продолжительность последнего сеанса прямой трансляции, воспроизведенного пользователями в комнате прямой трансляции (окно сеанса) и т. д.;
слой источника данных
В новой интегрированной архитектуре функций мы единообразно абстрагируем различные типы источников данных в Schema Таблица, это потому, что базовые зависимости Flink SQL Уровень механизма вычислений предоставляет очень удобный источник данных. Table Format абстрактный. В сценарии рекомендаций источники данных очень разнообразны, и каждая функция зависит от одного или нескольких вышестоящих источников данных. Источником данных может быть Kafka、RMQ、KV Хранилище, RPC Служить. Для нескольких источников данных поддерживаются потоковая передача данных и пакетное объединение. Типы объединения включают в себя. Window Join на основе key зернистый Window Union Присоединение, таблица размеров Join поддерживать Abase、RPC、HIVE ждать. Конкретная логика сращивания для каждого типа следующая:
три типа Join и Union Может использоваться в комбинации для достижения сложного сращивания нескольких потоков данных. Например (A union B) Window Join (C Lookup Join D)。
Кроме того, Флинк SQL поддерживаются сложные поля вычислительных возможностей, то есть бизнес-сторона может быть определена на основе источника данных TableSchema Базовые поля реализуют расчет расширенных полей. Сущность логики бизнес-вычислений заключается в УДФ, мы предоставим UDF API Отдайте интерфейс деловому человеку, а затем загрузите его. JAR Загружайте функции в фоновом режиме. Кроме того, логика расчета для относительно проста, и фон также прост при отправке. Python Код реализует многоязычные вычисления.
Бизнес-DSL
Предоставьте высокоабстрактный язык DSL для создания функций с точки зрения бизнеса, скрывая детали базовых вычислений и механизмов хранения, позволяя деловым сторонам сосредоточиться на определении бизнес-функций. Уровень бизнес-DSL предоставляет: источники данных, форматы данных, логику извлечения данных, типы функций генерации данных, методы вывода данных и т. д.
уровень хранения состояния
Как упоминалось выше, основная проблема, которую решает новое решение по интеграции функций, заключается в том, как решать проблемы расчета различных типов (обычно скользящих окон) функций с состоянием. Для этого типа функций в архитектуре уровня автономных вычислений будет предусмотрен уровень хранения состояний, который извлекает RawFeature Следите за кусочками Slot магазин (Отрезок может быть временным интервалом или Session кусочки и др.). Тип среза является внутренним типом интерфейса и может быть архитектурно расширен в соответствии с потребностями бизнеса. То, что на самом деле хранится в состоянии, не является оригиналом RawFeature (хранение необработанных данных о поведении занимает слишком много места), но преобразовано в FeaturePayload вроде POJO структура,этотиндивидуальныйвнутри структурыподдерживатьобщийиз Различныйданныеструктуратип:
Бизнес-интерфейс для обновления уровня состояния: входными данными является RawFeature, извлеченный из уровня извлечения/сращивания SQL. Бизнес-сторона может реализовать интерфейс updateFeatureInfo для обновления уровня состояния в соответствии с потребностями бизнеса. Интерфейс обновления встроен для часто используемых типов функций, а пользовательские типы функций бизнес-стороны могут наследовать реализацию интерфейса обновления.
/** * Статус функции update интерфейс */public interface FeatureStateApi extends Serializable { /** * особенность Даженовыйинтерфейс, Каждый восходящий журнал извлечет необходимые поля и преобразует их в формат. fields, Используется для обновления перепискииз Статус функции * * @param fields * context: Сохранить имя функции, первичный ключ и Некоторые параметры конфигурации ; * oldFeature: Характеристики до статуса * fields: платформа / Конфигурационный файл Средний изобразить поле * @return */FeaturePayLoad assign(Context context,FeaturePayLoad feature, Map<String, Object> rawFeature);}
Конечно, нет необходимости в уровне хранения состояния для функций ETL без сохранения состояния.
Вычислительный уровень
Уровень вычисления функций завершает логику агрегирования вычислений функций, а входными данными для расчета функций с отслеживанием состояния является объект FeaturePayload со срезами, хранящимися на уровне хранения состояний. Простые функции ETL не имеют уровня хранения состояния, а входными данными является непосредственно объект данных RawFeature уровня извлечения SQL. Конкретный интерфейс выглядит следующим образом:
/** * иметьсостояниеособенностьвычислитьинтерфейс */public interface FeatureStateApi extends Serializable {
/** * особенностьполимеризацияинтерфейс,будет настроен в соответствии сизособенностьвычислитьокно, читатьокно内所иметь Статус функции,После сортировки передатьинтерфейс * * @param featureInfos, Включать 2 индивидуальный field * timeslot: Статус функция соответствует временному интервалу * Feature: Временной интервализ Статус функции * @return */ FeaturePayLoad aggregate(Context context, List<Tuple2<Slot, FeaturePayLoad>> slotStates);
}
Интерфейс агрегирования функций с отслеживанием состояния
/** * Интерфейс расчета объектов без сохранения состояния */public interface FeatureConvertApi extends Serializable {
/** * Конвертироватьинтерфейс, Каждый восходящий журнал извлечет необходимые поля и преобразует их в формат. fields, При расчете без сохранения состояния конвертируйте для внутреннего из feature тип ; * * @param fields * fields: платформа / Конфигурационный файл Средний изобразить поле * @return */ FeaturePayLoad convert(Context context, FeaturePayLoad featureSnapshot, Map<String, Object> rawFeatures);
}
Интерфейс расчета объектов без сохранения состояния
Кроме того, выполнение функции Вычислительный уровень запускается посредством триггерного механизма. Основными триггерными механизмами являются:
Реализация бизнеса
в настоящий момент рекомендуемая сцена в Байте,новыйодинпоколениеособенность Архитектура Уже вПрямая трансляция Douyin, электронная коммерция, push-уведомления, рекомендации Douyin и т. д.сцена Выходим в онлайн один за другимодиннемного реального времениособенность。В основномиметьсостояниетипизособенность,带иметьокноиз Одномерная статистикатип、Двумерная перевернутая молния.тип、двумерный TOPK Тип, в режиме реального времени CTR/CVR Rate Типовые особенности, особенности типа последовательности и т. д.
Достигнуты замечательные результаты в достижении основных бизнес-показателей. В сценарии прямой трансляции, после того как был запущен пакет функций, основанных на мощных возможностях выражения новой архитектуры функций, основные показатели бизнес-просмотра и показатели взаимодействия достигли очень значительного прироста. В сценарии электронной коммерции было запущено более 400 функций реального времени на основе новой архитектуры функций. Среди них, что касается электронной коммерции в прямом эфире, показатели основного бизнеса GMV и количества заказов достигли значительных успехов. В сценарии Douyin push емкость автономного хранилища создается на основе новых функций, данные о поведении пользователей агрегируются, а затем записываются в различные нижестоящие хранилища, что значительно снижает нагрузку на нижестоящую базу данных бизнеса. В некоторых сценариях QPS может снизиться. до 10% от предыдущего уровня об. Кроме того, лента рекомендаций Douyin, комментарии и другие компании реконструируют исходную систему функций на основе новой архитектуры функций.
Стоит упомянуть, что,В сценариях электронной коммерции и прямой трансляции Douyin,Flink Достигнут максимальный статус задачи потоковой передачи 60T,ииэтотиндивидуальный Масштабы все еще растут。Ожидается, что в ближайшем будущем,один Задача изсостояниеиметь可能会突破 100T,Это представляет собой серьезную угрозу стабильности архитектуры.
Оптимизация производительности
Flink State Cache
в настоящий момент Flink Укажите две категории StateBackend: на основе Heap из FileSystemStateBackend на основе RocksDB из RocksDBStateBackend. для FileSystemStateBackend, поскольку данные находятся в памяти, скорость доступа очень высокая и дополнительных накладных расходов нет. и RocksDBStateBackend Есть запрос и сериализация / Дополнительные накладные расходы, такие как десериализация, процессор Использование значительно увеличится. Внутри байтов интенсивно используются State изjob, для работы с большим статусом, обычно используется RocksDBStateBackend для управления данными местного состояния. Рокс ДБ это KV база данных, с LSM из Формальная организацияданные,В процессе фактического использования,Имеет следующие характеристики:
Используется деловыми сторонами State из Сцены в основном получить обновление, используется RocksDB В процессе эксплуатации локального государственного хранилища возникли следующие проблемы:
Чтобы решить вышеуказанные проблемы, вы можете хранить объект в памяти. Кэш для оптимизации доступа к данным точек доступа и сокращения CPU накладные расходы Мы надеемся, что благодаря приведенному выше вводному материалу StateBackend предоставитьиндивидуальный Универсальныйиз Cache функция, через Flink StateBackend Cache План функционального проектирования преследует следующие цели:
Автор: ibyte База Архитектура Flink Командная работа для создания обновлений функций в реальном времени , зайди в интернет Cache Большинство сцен CPU Уровень использования, вероятно, будет таким же высоким, как 50% влево и вправо от дохода;
PB IDL-обрезка
Во внутренней ссылке на генерацию байтов в режиме реального времени мы в основном полагаемся на изданные потоки. Кафка. Эти Kafka Все прошло PB Определение изданные, со многими полями. Уровень компании большой Topic Обычно там будет 100+ из полей, но в большинстве задач по производству функций используются только некоторые из полей. для Protobuf Формат изданных исходников, мы можем полностью стримить через Обрезанные, маска Некоторые несущественные поля для сохранения изнакладных десериализации расходы。PB типизация журнала,Вы можете напрямую Обрезать idl, сохранит порядковый номер необходимого поля без изменений и пропустит его при десериализации unknown field из анализа, это для CPU Это более экономично, но выигрыша в пропускной способности сети не будет. Ожидается, что после Обрезания удастся сэкономить много денег. CPU ресурс. Сейчас онлайнPB IDL-обрезкапосле,Самая сложная задача из CPU Доход 30% о.
Возникла проблема
Новые возможности архитектуры. Производственные задачи по своей сути являются отслеживаемыми. Flink Задача, лежащая в основе состояния хранилища StateBackend В основном местные RocksDB。В основном лицом к лицу с двумяиндивидуальный Сложнее понятьизвопрос,Во-первых, задача изменения контрольной точки DAG недействительна.,Второй – местный.хранилищенехорошоподдерживать Статус функцииисторияданныеобратная трассировка。
Текущее новое поколение Архитектуры все еще быстро развивается в сценарии байтовых рекомендаций и на данный момент лучше решает проблему создания оконных функций в реальном времени.
Чтобы добиться создания функций в унифицированных сценариях рекомендаций, мы продолжим использовать Flink SQL Имея возможность интегрировать поток и партию, мы уделяем особое внимание серийному производству. Это также будет основано на Hudi Технология озера данных завершает ввод функций в озеро в режиме реального времени и эффективно поддерживает сценарии обучения моделей для отслеживания болевых точек автономных функций. Направление двигателя правил, планы продолжить исследование CEP продвигает больше практик реализации в сценариях электронной коммерции. В направлении расчета окон в реальном времени мы продолжим проводить углубленные исследования. Flink Родной оконный механизм для решения проблемы настоящий В тот момент программа сталкивается с проблемой выхода из окна функции данных.
Об авторе:
Го Вэньфэй, руководитель основного направления обслуживания рекомендательной системы ByteDance. Присоединился к компании Byte в начале 2015 года и в основном отвечает за базовое направление обслуживания рекомендательной системы, такое как дедупликация, подсчет, функции и т. д.
Команда архитектуры рекомендаций Bytedance, направление вычислений в реальном времени, ответственное за Douyin, Toutiao, Xigua Video и другие супер 10 100 миллионы пользовательских продуктов Система Рекомендации Архитектура Проектирование и разработка вычислительных систем реального времени для обеспечения стабильности и высокой доступности системы. Абстрагируйте общую вычислительную систему реального времени, создайте унифицированную промежуточную платформу с функциями рекомендаций, реализуйте гибкую и масштабируемую высокопроизводительную систему и модель вычислений, а также внедрите расширенную дедупликацию, подсчет, сервисы функций и другие системы потоковой передачи рекомендаций в реальном времени. в настоящий момент Очень не хватает людей,Студенты, изучающие технологии, приглашаются присоединиться.,Давайте вместе создадим передовую систему потоковой передачи рекомендаций мирового уровня в режиме реального времени.,Контактная информация: guowenfei@bytedance.com.
Рекомендуемые статьи сегодня
Рекомендации по активности
11 луна 12-13 Состоялось в тот же день ArchSummit Глобальный саммит архитекторов Станция Шэньчжэнь [Периферийные вычисления и IoT Архитектура] Специальная тема приглашает старших технических экспертов из Alibaba Cloud поделиться «На основе OpenYurt В теме «Практика реализации собственной облачной архитектуры Edge», помимо внедрения периферийных технологий и периферийных облачных вычислений, также будет представлено OpenYurt Технические детали, точки проектирования и варианты реализации для детального анализа и обмена OpenYurt В логистической отрасли случаи общения в режиме реального времени.
Более Архитектура Нажмите на нижнюю часть корпуса«Прочитай оригинальный текст»Проверять。Не пропустите прямую трансляциюпотокиз Шанс~ArchSummit Продажа билетов на вокзал Шэньчжэня подошла к концу,заинтересованныйизодноклассникОтсканируйте QR-код нижеИли проконсультируйтесь напрямую с билетершей.:17310043226(То же, что WeChat)。