Потоковая обработка событий клиентов и их отображение...
TRANSCRIPT
![Page 1: Потоковая обработка событий клиентов и их отображение на интерактивной карте](https://reader031.vdocuments.site/reader031/viewer/2022020213/587d6b471a28ab32318b6a79/html5/thumbnails/1.jpg)
Потоковая обработка событий клиентов и их отображение на интерактивной карте
Александр СербулРуководитель направления
![Page 2: Потоковая обработка событий клиентов и их отображение на интерактивной карте](https://reader031.vdocuments.site/reader031/viewer/2022020213/587d6b471a28ab32318b6a79/html5/thumbnails/2.jpg)
Карл… Карл, я активно
использую Spark
Streaming
Это очень круто,
пап!
![Page 3: Потоковая обработка событий клиентов и их отображение на интерактивной карте](https://reader031.vdocuments.site/reader031/viewer/2022020213/587d6b471a28ab32318b6a79/html5/thumbnails/3.jpg)
Карл… Карл, я специалист по
BigData….
Это очень круто, пап!
Но я так и не понял, как
работает TCP/IP, сынок!
СОВСЕМ!!!
![Page 4: Потоковая обработка событий клиентов и их отображение на интерактивной карте](https://reader031.vdocuments.site/reader031/viewer/2022020213/587d6b471a28ab32318b6a79/html5/thumbnails/4.jpg)
Поставим себе задачу
1. Клиенты пользуются сервисом по всему миру
2. Тысячи событий в секунду
3. Потоковые алгоритмы агрегации
4. Визуализация на карте
5. Масштабирование карты
6. Чтобы работало быстро и «не вызывало приступов
эпилепсии и рака глаз»
7. Но сначала посмотрим, что есть готового…
![Page 5: Потоковая обработка событий клиентов и их отображение на интерактивной карте](https://reader031.vdocuments.site/reader031/viewer/2022020213/587d6b471a28ab32318b6a79/html5/thumbnails/5.jpg)
Технологии - RabbitMQ
http://www.rabbitmq.com
1. Очереди сообщений на все
вкусы
2. AMQP
3. Erlang
![Page 6: Потоковая обработка событий клиентов и их отображение на интерактивной карте](https://reader031.vdocuments.site/reader031/viewer/2022020213/587d6b471a28ab32318b6a79/html5/thumbnails/6.jpg)
Технологии - Apache Kafka
http://kafka.apache.org/
1. “LinkedIn”
2. Не совсем очередь
3. Совсем не очередь!
4. Клиентское приложение
«держит» курсор потока
5. Scala
![Page 7: Потоковая обработка событий клиентов и их отображение на интерактивной карте](https://reader031.vdocuments.site/reader031/viewer/2022020213/587d6b471a28ab32318b6a79/html5/thumbnails/7.jpg)
Технологии - Apache Storm
http://storm.apache.org
1. Task parallel
2. Удобные, гибкие workflow
3. Clojure/JVM
![Page 8: Потоковая обработка событий клиентов и их отображение на интерактивной карте](https://reader031.vdocuments.site/reader031/viewer/2022020213/587d6b471a28ab32318b6a79/html5/thumbnails/8.jpg)
Технологии - Pinba
http://pinba.org
1. Агрегация внутри собств.
движка в MySQL
2. Интеграция с PHP
3. Быстро, удобно
4. Badoo.com
![Page 9: Потоковая обработка событий клиентов и их отображение на интерактивной карте](https://reader031.vdocuments.site/reader031/viewer/2022020213/587d6b471a28ab32318b6a79/html5/thumbnails/9.jpg)
Apache Hadoop
• Платформа:
• - вычисления (MapReduce)
• - файловая система (HDFS)
• - “SQL-запросы” по данным (Hive)
![Page 10: Потоковая обработка событий клиентов и их отображение на интерактивной карте](https://reader031.vdocuments.site/reader031/viewer/2022020213/587d6b471a28ab32318b6a79/html5/thumbnails/10.jpg)
Apache Spark
• Скорость!
• Работа в памяти
• Кэширование в памяти
• Простота развертывания
![Page 11: Потоковая обработка событий клиентов и их отображение на интерактивной карте](https://reader031.vdocuments.site/reader031/viewer/2022020213/587d6b471a28ab32318b6a79/html5/thumbnails/11.jpg)
Парадигма MapReduce
«Mining of Massive Datasets»: Leskovec, Rajaraman, Ullman (Stanford University)
![Page 12: Потоковая обработка событий клиентов и их отображение на интерактивной карте](https://reader031.vdocuments.site/reader031/viewer/2022020213/587d6b471a28ab32318b6a79/html5/thumbnails/12.jpg)
Apache Spark
![Page 13: Потоковая обработка событий клиентов и их отображение на интерактивной карте](https://reader031.vdocuments.site/reader031/viewer/2022020213/587d6b471a28ab32318b6a79/html5/thumbnails/13.jpg)
Apache Spark - код
• Реляционная алгебра
• Распределенные коллекции
• Цепочки обработки
![Page 14: Потоковая обработка событий клиентов и их отображение на интерактивной карте](https://reader031.vdocuments.site/reader031/viewer/2022020213/587d6b471a28ab32318b6a79/html5/thumbnails/14.jpg)
«Online» алгоритмы, они другие!
• Кластеризация
• Уникальные элементы
• Агрегация
• Ограничения по памяти
• Это – уже не SQL ;-)
«Mining of Massive Datasets»: Leskovec, Rajaraman, Ullman (Stanford University)
![Page 15: Потоковая обработка событий клиентов и их отображение на интерактивной карте](https://reader031.vdocuments.site/reader031/viewer/2022020213/587d6b471a28ab32318b6a79/html5/thumbnails/15.jpg)
Война систем хранения
Слайд 15
• SQL на MapReduce: Hive, Pig, Spark SQL
• SQL на MPP (massive parallel processing):
Impala, Presto, Amazon RedShift, Vertica
• NoSQL: Cassandra, Hbase, Amazon DynamoDB
• Классика: MySQL, MS SQL, Oracle, …
![Page 16: Потоковая обработка событий клиентов и их отображение на интерактивной карте](https://reader031.vdocuments.site/reader031/viewer/2022020213/587d6b471a28ab32318b6a79/html5/thumbnails/16.jpg)
Lambda-архитектура
• Людей заваливает
данными…
• С большой скоростью
![Page 17: Потоковая обработка событий клиентов и их отображение на интерактивной карте](https://reader031.vdocuments.site/reader031/viewer/2022020213/587d6b471a28ab32318b6a79/html5/thumbnails/17.jpg)
Как устроен наш облачный сервис рекомендаций.
Разминаем мозг.
![Page 18: Потоковая обработка событий клиентов и их отображение на интерактивной карте](https://reader031.vdocuments.site/reader031/viewer/2022020213/587d6b471a28ab32318b6a79/html5/thumbnails/18.jpg)
BigData – «под капотом». Виды событий.
Событие
• Кука Пользователя
• Хэш лицензии
• Домен
• ID товара
• Название Товара
• Категории Товара
• ID рекомендации
• ряд других
Просмотр
товараДобавление
в корзину
Заказ Оплата
Заказа
![Page 19: Потоковая обработка событий клиентов и их отображение на интерактивной карте](https://reader031.vdocuments.site/reader031/viewer/2022020213/587d6b471a28ab32318b6a79/html5/thumbnails/19.jpg)
Регистрация Хранение
BigData – «под капотом». С птичьего полета.
~1000 запросов/сек
bitrix.info
Обработка, анализ
Batch процессинг
On-lineпроцессинг
Выдача ключевой информации
analytics.bitrix.info
![Page 20: Потоковая обработка событий клиентов и их отображение на интерактивной карте](https://reader031.vdocuments.site/reader031/viewer/2022020213/587d6b471a28ab32318b6a79/html5/thumbnails/20.jpg)
Amazon DynamoDB
nginx+Lua Amazon Kinesis
BigData – «под капотом». Регистрация событий.
~1000 запросов/сек
Буфер
bitrix.info
worker’s cluster
worker (PHP)~100 запросов/секфильтрация
worker (PHP)
worker (PHP)
worker (PHP)
worker (PHP)
worker (PHP)
worker (PHP)
worker (PHP)
Лог событий
Пользователи
Домены
![Page 21: Потоковая обработка событий клиентов и их отображение на интерактивной карте](https://reader031.vdocuments.site/reader031/viewer/2022020213/587d6b471a28ab32318b6a79/html5/thumbnails/21.jpg)
Amazon DynamoDB
BigData – «под капотом». Обработка, анализ, выдача.
Лог событий
Пользователи
Домены
Apache Spark
Сервер (spot)
Amazon S3
Файл данных
Файл данных
Сервер (spot)
Сервер (spot)
Сервер (spot)
…Кластер
рекомендаций
Apache Tomcat
Apache Mahout
«Мозги»
Выдача
anal
ytic
s.b
itri
x.in
fo
![Page 22: Потоковая обработка событий клиентов и их отображение на интерактивной карте](https://reader031.vdocuments.site/reader031/viewer/2022020213/587d6b471a28ab32318b6a79/html5/thumbnails/22.jpg)
Как мы сделали визуализацию активности
клиентов Битрикс24 по всему миру в реальном
времени.
Отключаем мозг и наслаждаемся
![Page 23: Потоковая обработка событий клиентов и их отображение на интерактивной карте](https://reader031.vdocuments.site/reader031/viewer/2022020213/587d6b471a28ab32318b6a79/html5/thumbnails/23.jpg)
Amazon Kinesis
Apache Spark Streaming
~1000 событий/сек
Окно агрегации – 30 секунд
JVM
HashTable
Геоточка - LinkedList
Json
Рас
тер
иза
тор
(PH
P)
Яндекс.Карта
Архитектура карты активности клиентов Битрикс24
![Page 24: Потоковая обработка событий клиентов и их отображение на интерактивной карте](https://reader031.vdocuments.site/reader031/viewer/2022020213/587d6b471a28ab32318b6a79/html5/thumbnails/24.jpg)
Apache Spark Streaming
1. Собираем дискретные RDD из Kinesis
2. Определяем координаты по IP-адресу
3. На одной ноде формируем хэш-таблицу геоточек и
доменов
4. Выгружаем json-для серверного кластеризатора
5. Отдаем кластеризатором результаты в карту
![Page 25: Потоковая обработка событий клиентов и их отображение на интерактивной карте](https://reader031.vdocuments.site/reader031/viewer/2022020213/587d6b471a28ab32318b6a79/html5/thumbnails/25.jpg)
Яндекс.Карты
1. Нанести все объекты (десятки тысяч) на карту — очень медленно
2. Встроенная кластеризация (ObjectManager) - медленно
3. Серверная кластеризация (RemoteObjectManager) — отлично!
Алгоритм простой: разбиваем карту на прямоугольники и определяем
среднюю точку (центроид) в каждом
![Page 26: Потоковая обработка событий клиентов и их отображение на интерактивной карте](https://reader031.vdocuments.site/reader031/viewer/2022020213/587d6b471a28ab32318b6a79/html5/thumbnails/26.jpg)
Клиенты Битрикс24
www.bitrix24.ru/online-domains-map
![Page 27: Потоковая обработка событий клиентов и их отображение на интерактивной карте](https://reader031.vdocuments.site/reader031/viewer/2022020213/587d6b471a28ab32318b6a79/html5/thumbnails/27.jpg)
Текущая активность клиентов
1. Собираем дискретные RDD из Kinesis – 30 сек шаг
2. Определяем координаты по IP-адресу, кэшируем
3. На одной ноде формируем хэш-таблицу геоточек и
доменов в памяти, с агрегацией
4. Храним ВСЕ хиты каждой геоточки, вытесняем по
времени (LinkedList)
5. Астрономия — терминатор дня/ночи
6. Выгружаем json-для серверного кластеризатора
7. Отдаем кластеризатором результаты в карту
![Page 28: Потоковая обработка событий клиентов и их отображение на интерактивной карте](https://reader031.vdocuments.site/reader031/viewer/2022020213/587d6b471a28ab32318b6a79/html5/thumbnails/28.jpg)
Текущая активность клиентов Битрикс24
www.bitrix24.ru/online-domains-map
![Page 29: Потоковая обработка событий клиентов и их отображение на интерактивной карте](https://reader031.vdocuments.site/reader031/viewer/2022020213/587d6b471a28ab32318b6a79/html5/thumbnails/29.jpg)
Текущая активность клиентов Битрикс24
www.bitrix24.ru/online-domains-map
![Page 30: Потоковая обработка событий клиентов и их отображение на интерактивной карте](https://reader031.vdocuments.site/reader031/viewer/2022020213/587d6b471a28ab32318b6a79/html5/thumbnails/30.jpg)
Скорость сайта клиента на Битрикс
1. Собираем хиты из Amazon Kinesis в Redis
2. Хит содержит метрики js navigation timing.
3. Храним последние 1250 хитов (redis list)
4. Удаляем 20% самых долгих
5. Рассчитываем медиану времени отображения
страницы в кластере
6. Отдаем на карту, jsonp, RemoteObjectManager
![Page 31: Потоковая обработка событий клиентов и их отображение на интерактивной карте](https://reader031.vdocuments.site/reader031/viewer/2022020213/587d6b471a28ab32318b6a79/html5/thumbnails/31.jpg)
Скорость сайта клиента на Битрикс
![Page 32: Потоковая обработка событий клиентов и их отображение на интерактивной карте](https://reader031.vdocuments.site/reader031/viewer/2022020213/587d6b471a28ab32318b6a79/html5/thumbnails/32.jpg)
Скорость сайта клиента на Битрикс
![Page 33: Потоковая обработка событий клиентов и их отображение на интерактивной карте](https://reader031.vdocuments.site/reader031/viewer/2022020213/587d6b471a28ab32318b6a79/html5/thumbnails/33.jpg)
Скорость сайта клиента на Битрикс
![Page 34: Потоковая обработка событий клиентов и их отображение на интерактивной карте](https://reader031.vdocuments.site/reader031/viewer/2022020213/587d6b471a28ab32318b6a79/html5/thumbnails/34.jpg)
Скорость сайта клиента на Битрикс
![Page 35: Потоковая обработка событий клиентов и их отображение на интерактивной карте](https://reader031.vdocuments.site/reader031/viewer/2022020213/587d6b471a28ab32318b6a79/html5/thumbnails/35.jpg)
Скорость сайта клиента на Битрикс