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