![Page 1: Выступление Александра Петрова из DCA (Data-Centric Alliance)](https://reader034.vdocuments.pub/reader034/viewer/2022050808/55c98245bb61eb0a068b4700/html5/thumbnails/1.jpg)
datacentric.ru
Переход с Map-Reduce на Real-time архитектуру
Александр Петров
Head of R&D
![Page 2: Выступление Александра Петрова из DCA (Data-Centric Alliance)](https://reader034.vdocuments.pub/reader034/viewer/2022050808/55c98245bb61eb0a068b4700/html5/thumbnails/2.jpg)
Архитектура DMP
• Действия пользователей накапливаются в HBASE
• Раз в сутки Analytic Engine полностью пересчитывает профили пользователей
• Analytic Engine – контейнер скриптов
• Задержка – минимум сутки
![Page 3: Выступление Александра Петрова из DCA (Data-Centric Alliance)](https://reader034.vdocuments.pub/reader034/viewer/2022050808/55c98245bb61eb0a068b4700/html5/thumbnails/3.jpg)
Ретаргетинг: вероятность конверсии
![Page 4: Выступление Александра Петрова из DCA (Data-Centric Alliance)](https://reader034.vdocuments.pub/reader034/viewer/2022050808/55c98245bb61eb0a068b4700/html5/thumbnails/4.jpg)
Нужен Real-Time engine
• Для того чтобы не терять ценных клиентов – нужно обрабатывать данные без задержек
• Хочется сохранить возможность конструирования сложных сегментов
• Не хочется каждый день обрабатывать всю историю пользователей (даже если она не изменилась)
![Page 5: Выступление Александра Петрова из DCA (Data-Centric Alliance)](https://reader034.vdocuments.pub/reader034/viewer/2022050808/55c98245bb61eb0a068b4700/html5/thumbnails/5.jpg)
Модель Акторов
Актор– примитив параллельного расчета.
Актор умеет: • Принимать сообщения• Посылать сообщения• Создавать новых актор’ов• Устанавливать как
реагировать на сообщения
![Page 6: Выступление Александра Петрова из DCA (Data-Centric Alliance)](https://reader034.vdocuments.pub/reader034/viewer/2022050808/55c98245bb61eb0a068b4700/html5/thumbnails/6.jpg)
Akka + Akka cluster
Akka – toolkit для scala и java реализующий модель акторов. Предназначен для разработки масштабируемых приложений. Akka cluster – часть akka реализующая распределенную сетевую работу модели акторов.
http://akka.io/ - сайт akkahttps://www.coursera.org/course/reactive - курс на coursera
![Page 7: Выступление Александра Петрова из DCA (Data-Centric Alliance)](https://reader034.vdocuments.pub/reader034/viewer/2022050808/55c98245bb61eb0a068b4700/html5/thumbnails/7.jpg)
Архитектура Real-Time engine
• 1 юзер= 1 актор
• Юзеры шардированы по User ID
• Dispatcher читает сообщения из очереди и отправляет actor’у соответствующему User ID (или создает новый actor)
• Актор при получении сообщения запускает скритпы сегментации
![Page 8: Выступление Александра Петрова из DCA (Data-Centric Alliance)](https://reader034.vdocuments.pub/reader034/viewer/2022050808/55c98245bb61eb0a068b4700/html5/thumbnails/8.jpg)
Результаты
• Входящий поток 3000 событий в секунду• 3 ноды akka-кластера• TTL – 1 час, 7 миллионов пользователей онлайн• Среднее время выполнение одного скрипта < 5мс• Средняя задержка между попаданием юзера в очередь и обновлением
информации в aerospike – 1 секунда
![Page 9: Выступление Александра Петрова из DCA (Data-Centric Alliance)](https://reader034.vdocuments.pub/reader034/viewer/2022050808/55c98245bb61eb0a068b4700/html5/thumbnails/9.jpg)
Where we go
• Персистентность – сейчас RT обрабатывает только последнюю сессию юзера
• Перевод всех источников данных на RT-обработку и полный отказ от map-reduce
• Уменьшение количества используемых мощностей за счет обработки только активных пользователей