Конференция завершена. Ждем вас на HighLoad++ в следующий раз!

Обработка больших объемов событий в real-time-рекомендательных системах на Go

GolangConf: Technologies

GolangConf: Technologies

Доклад отозван

Мнение Программного комитета о докладе

Было много ML-моделей, 200K запросов в секунду, 25M рекламных предложений, realtime рекламная сеть, Kafka, наполненная событиями и целое море юзеров, которым надо показать рекламу за наносекунды...

Тезисы

Компания PropellerAds — рекламная сеть. Одна из основных задач рекламной сети — эффективный подбор рекламы для показа конкретному пользователю в реальном времени. При обработке запросов на подбор рекламы необходимо как можно точнее оценить вероятность того, что данный пользователь совершит конверсию для множества имеющихся рекламных предложений. Для этого приходится учитывать большие объемы событий взаимодействия (показов, кликов, конверсий) других пользователей с разными рекламными предложениями. При больших объемах анализируемых событий, а также при большой частоте запросов на подбор рекламы это становится нетривиальной задачей.

Для реализации данной задачи в нашей компании созданы несколько микросервисов на языке Go. Система обрабатывает более 200K запросов в секунду и хранит в памяти Go-процесса около 120 Gb данных. При этом в секунду рассчитываются вероятности конверсии для 25M рекламных предложений.

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

* Чтение большого объема данных из нашей шины событий (kafka).
* Расчет агрегатов событий в различных разрезах (счетчиков) с наименьшими затратами по CPU и memory footprint, и какие структуры данных мы для этого используем.
* Уменьшение contention при обработке событий.

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

Разработчики нагруженных сервисов обработки данных на языке Go.

В настоящий момент Product Owner команды "Core" компании PropellerAds.
Команда занимается разработкой высоконагруженного ядра системы ротации рекламы.
Основная точка приложения усилий — программная реализация алгоритмов рекомендательных систем в real-time-среде.

В недавнем прошлом разработчик и технический эксперт компании PropellerAds.
Занимался разработкой высоконагруженных сервисов на языке Go.
Вместе с другими разработчиками PropellerAds решал вопросы оптимизации производительности микросервисов на Go, масштабирования нагрузки, мониторинга микросервисов на продакшне, профилирования и поиска узких мест.

В свободное время увлекается горными лыжами зимой и туристическими походами летом.

PropellerAds

PropellerAds — международная продуктовая ИТ-компания в сфере AdTech. Миллион запросов в секунду — это не предел, а норма. Более 1000 серверов с честными микросервисами на них. Слова high-load, big data и machine learning для них не просто красивые термины, а ежедневная реальность. Работают по скраму с недельными спринтами и не разводят бюрократию.

Видео