Методы эффективной обработки данных на Go в real-time рекомендательных системах GolangConf: Go для высоконагруженных систем

Программный комитет ещё не принял решения по этому докладу
Томайлы Алексей Дмитриевич
PropellerAds

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

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

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

Тезисы

Мы компания Propellerads рекламный нетворк. Одна из основных задач рекламного нетворка
эффективный real-time подбор рекламы для показа конкретному пользователю. Для этих целей
используется machine learning. При real-time обработке запросов на побор рекламы сайтов,
необходимо как можно быстрее оценить вероятность что данный пользователь совершит конверсию
для множества имеющихся рекламных предложений. При больших объемах входного траффика (больших частотах запросов на подбор рекламы), больших объемах имеющихся рекламных предложений и большой вычислительной сложности machine learning моделей это становится нетривиальной задачей.

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

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

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

Другие доклады секции GolangConf: Go для высоконагруженных систем