Yet another Flat Format: делаем zero-copy эффективнее flatbuffers с удобством protobuf

Языки программирования и технические стеки

C/C++
Стандарты кодирования
Разработка библиотек, включая open source библиотеки
Оптимизация

Программный комитет ещё не принял решения по этому докладу

Целевая аудитория

Разработчики и архитекторы высокопроизводительных бэкендов на нативных языках (C++ и Go), стремящиеся снизить инфраструктурные издержки на работу с данными.

Тезисы

Чтение сериализованных данных — это налог, который платит каждый сервис при получении информации из запроса или работе с объектом из базы данных. Чаще всего этот налог возникает в виде парсинга protobuf, а в продвинутых случаях может быть заменен на значительно более дешевую и столь же неудобную работу с zero-copy flatbuffers представлением.

В Рекламе Яндекса, где рекомендательная система для подбора релевантных кандидатов обрабатывает сотни тысяч объектов на каждый из сотен тысяч запросов, стандартные эффективные подходы к представлению данных становятся слишком дорогими и опасными.

В докладе расскажем, как мы через неудачные попытки пришли к разработке yet another flat format для эффективной и удобной работы с данными в рантайме. Посмотрим, как единая объектная модель упрощает жизнь ML-инженерам, и проведем deep dive во внутреннее устройство и trade-offs flatbuffers, чтобы понять, почему у нас получился не универсальный «убийца flatbuffers» и как осознанный выбор компромиссов при создании формата позволяет экономить десятки тысяч ядер и гигабайты сети на наших кластерах.

Разрабатывает инфраструктуру сервисов доставки данных для рекламного движка в Яндексе.

Видео