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

Быстрое декодирование AVRO -> Go struct в event-based системах

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

Бэкенд / другое
Оптимизация производительности
GO

Доклад отклонён

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

Разработчики на Go

Тезисы

Компания PropellerAds - рекламная сеть. У нас реализована сервисно-микросервисная event-base архитектура на базе Go сервисов, которые общаются по GRPC, в качестве шины данных используют Apache Kafka, события из которой попадают в колоночную БД Vertica и другие Go сервисы, необходимые для быстрого подбора и показа рекламы.

Многие Highload проекты имеют событийную архитектуру: события летят по шине данных, а затем попадают на обработку в зависимые сервисы или хранилища. На разных этапах этого флоу могут возникать проблемы производительности.

В этом докладе я расскажу о том, как мы переходили с гибкой структуры schema less событий в формате JSON на формат AVRO с использованием Schema Registry. Во время перехода мы столкнулись с проблемой медленного декодирования AVRO существующими средствами Go (linkedin/goavro, actgardner/gogen-avro, mitchellh/mapstructure). Скомбинировав указанные решения, избавившись от лишних reflection удалось реализовать быстрое декодирование AVRO в существующие Go структуры в сервисах, которые читают Кафку.
Мы разработали подход, который позволяет быстро создавать и модифицировать типы событий, которые между сервисами передаются через GRPC (Protobuf), сериализуются в AVRO с использованием Schema Registry и быстро декодируются конечными сервисами в Go structs.

Разработчик Go сервисов в команде Core.
Участвую в разработке системы ротации и оценки рекламных материалов.

PropellerAds

PropellerAds (https://propellerads.com/) - рекламная сеть, объединяющая рекламодателей и владельцев сайтов по всему миру. Это highload платформа, перемалывающая более 23 млрд. рекламных событий в сутки. Используя ML подходы, мы стараемся подобрать лучшую рекламу для каждого показа.

Видео