real time dmp
TRANSCRIPT
datacentric.ru
Переход с Map-Reduce на Real-time архитектуру
Александр Петров
Head of R&D
Архитектура DMP
• Действия пользователей накапливаются в HBASE
• Раз в сутки Analytic Engine полностью пересчитывает профили пользователей
• Analytic Engine – контейнер скриптов
• Задержка – минимум сутки
Ретаргетинг: вероятность конверсии
Нужен Real-Time engine
• Для того чтобы не терять ценных клиентов – нужно обрабатывать данные без задержек
• Хочется сохранить возможность конструирования сложных сегментов
• Не хочется каждый день обрабатывать всю историю пользователей (даже если она не изменилась)
Модель Акторов
Актор– примитив параллельного расчета.
Актор умеет: • Принимать сообщения• Посылать сообщения• Создавать новых актор’ов• Устанавливать как
реагировать на сообщения
Akka + Akka cluster
Akka – toolkit для scala и java реализующий модель акторов. Предназначен для разработки масштабируемых приложений. Akka cluster – часть akka реализующая распределенную сетевую работу модели акторов.
http://akka.io/ - сайт akkahttps://www.coursera.org/course/reactive - курс на coursera
Архитектура Real-Time engine
• 1 юзер= 1 актор
• Юзеры шардированы по User ID
• Dispatcher читает сообщения из очереди и отправляет actor’у соответствующему User ID (или создает новый actor)
• Актор при получении сообщения запускает скритпы сегментации
Результаты
• Входящий поток 3000 событий в секунду• 3 ноды akka-кластера• TTL – 1 час, 7 миллионов пользователей онлайн• Среднее время выполнение одного скрипта < 5мс• Средняя задержка между попаданием юзера в очередь и обновлением
информации в aerospike – 1 секунда
Where we go
• Персистентность – сейчас RT обрабатывает только последнюю сессию юзера
• Перевод всех источников данных на RT-обработку и полный отказ от map-reduce
• Уменьшение количества используемых мощностей за счет обработки только активных пользователей