YaFF: как zero-copy-представление в Protobuf помогает экономить железо

30 ноября, 10:00, «Кейптаун»

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

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

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

Тезисы

Затраты на сериализацию — это налог, который платит любой сервис при записи и чтении данных. На больших объёмах классические подходы, такие как Protobuf, съедают слишком много ресурсов, а специализированные zero-copy-форматы (вроде FlatBuffers) требуют отказа от развитой экосистемы и усложняют интеграцию со смежными сервисами, где профиль нагрузки не требует таких оптимизаций. Чтобы решить эту проблему на масштабных нагрузках Рекламы Яндекса, мы разработали YaFF (Yet Another Flat Format).

В докладе расскажем, как сэкономить на десериализации, сохранив единую Protobuf-экосистему. Мы разберем архитектуру YaFF: как мир zero-copy объединяется с proto-схемами и привычными интерфейсами, а также чем приходится жертвовать ради нулевых аллокаций. На бенчмарках покажем, где именно достигается экономия железа, и посмотрим на готовые сценарии для оптимизации инфраструктуры. YaFF опубликован в opensource, так что все описанные подходы можно будет использовать в своих проектах.

Спикеры

Даниил Гавриловский
Разрабатывает базовую инфраструктуру рекламного движка Яндекса.

Другие доклады секции