36
Потоковая обработка событий клиентов и их отображение на интерактивной карте Александр Сербул Руководитель направления

Потоковая обработка событий клиентов и их отображение на интерактивной карте

Embed Size (px)

Citation preview

Page 1: Потоковая обработка событий клиентов и их отображение на интерактивной карте

Потоковая обработка событий клиентов и их отображение на интерактивной карте

Александр СербулРуководитель направления

Page 2: Потоковая обработка событий клиентов и их отображение на интерактивной карте

Карл… Карл, я активно

использую Spark

Streaming

Это очень круто,

пап!

Page 3: Потоковая обработка событий клиентов и их отображение на интерактивной карте

Карл… Карл, я специалист по

BigData….

Это очень круто, пап!

Но я так и не понял, как

работает TCP/IP, сынок!

СОВСЕМ!!!

Page 4: Потоковая обработка событий клиентов и их отображение на интерактивной карте

Поставим себе задачу

1. Клиенты пользуются сервисом по всему миру

2. Тысячи событий в секунду

3. Потоковые алгоритмы агрегации

4. Визуализация на карте

5. Масштабирование карты

6. Чтобы работало быстро и «не вызывало приступов

эпилепсии и рака глаз»

7. Но сначала посмотрим, что есть готового…

Page 5: Потоковая обработка событий клиентов и их отображение на интерактивной карте

Технологии - RabbitMQ

http://www.rabbitmq.com

1. Очереди сообщений на все

вкусы

2. AMQP

3. Erlang

Page 6: Потоковая обработка событий клиентов и их отображение на интерактивной карте

Технологии - Apache Kafka

http://kafka.apache.org/

1. “LinkedIn”

2. Не совсем очередь

3. Совсем не очередь!

4. Клиентское приложение

«держит» курсор потока

5. Scala

Page 7: Потоковая обработка событий клиентов и их отображение на интерактивной карте

Технологии - Apache Storm

http://storm.apache.org

1. Task parallel

2. Удобные, гибкие workflow

3. Clojure/JVM

Page 8: Потоковая обработка событий клиентов и их отображение на интерактивной карте

Технологии - Pinba

http://pinba.org

1. Агрегация внутри собств.

движка в MySQL

2. Интеграция с PHP

3. Быстро, удобно

4. Badoo.com

Page 9: Потоковая обработка событий клиентов и их отображение на интерактивной карте

Apache Hadoop

• Платформа:

• - вычисления (MapReduce)

• - файловая система (HDFS)

• - “SQL-запросы” по данным (Hive)

Page 10: Потоковая обработка событий клиентов и их отображение на интерактивной карте

Apache Spark

• Скорость!

• Работа в памяти

• Кэширование в памяти

• Простота развертывания

Page 11: Потоковая обработка событий клиентов и их отображение на интерактивной карте

Парадигма MapReduce

«Mining of Massive Datasets»: Leskovec, Rajaraman, Ullman (Stanford University)

Page 12: Потоковая обработка событий клиентов и их отображение на интерактивной карте

Apache Spark

Page 13: Потоковая обработка событий клиентов и их отображение на интерактивной карте

Apache Spark - код

• Реляционная алгебра

• Распределенные коллекции

• Цепочки обработки

Page 14: Потоковая обработка событий клиентов и их отображение на интерактивной карте

«Online» алгоритмы, они другие!

• Кластеризация

• Уникальные элементы

• Агрегация

• Ограничения по памяти

• Это – уже не SQL ;-)

«Mining of Massive Datasets»: Leskovec, Rajaraman, Ullman (Stanford University)

Page 15: Потоковая обработка событий клиентов и их отображение на интерактивной карте

Война систем хранения

Слайд 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: Потоковая обработка событий клиентов и их отображение на интерактивной карте

Lambda-архитектура

• Людей заваливает

данными…

• С большой скоростью

Page 17: Потоковая обработка событий клиентов и их отображение на интерактивной карте

Как устроен наш облачный сервис рекомендаций.

Разминаем мозг.

Page 18: Потоковая обработка событий клиентов и их отображение на интерактивной карте

BigData – «под капотом». Виды событий.

Событие

• Кука Пользователя

• Хэш лицензии

• Домен

• ID товара

• Название Товара

• Категории Товара

• ID рекомендации

• ряд других

Просмотр

товараДобавление

в корзину

Заказ Оплата

Заказа

Page 19: Потоковая обработка событий клиентов и их отображение на интерактивной карте

Регистрация Хранение

BigData – «под капотом». С птичьего полета.

~1000 запросов/сек

bitrix.info

Обработка, анализ

Batch процессинг

On-lineпроцессинг

Выдача ключевой информации

analytics.bitrix.info

Page 20: Потоковая обработка событий клиентов и их отображение на интерактивной карте

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: Потоковая обработка событий клиентов и их отображение на интерактивной карте

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: Потоковая обработка событий клиентов и их отображение на интерактивной карте

Как мы сделали визуализацию активности

клиентов Битрикс24 по всему миру в реальном

времени.

Отключаем мозг и наслаждаемся

Page 23: Потоковая обработка событий клиентов и их отображение на интерактивной карте

Amazon Kinesis

Apache Spark Streaming

~1000 событий/сек

Окно агрегации – 30 секунд

JVM

HashTable

Геоточка - LinkedList

Json

Рас

тер

иза

тор

(PH

P)

Яндекс.Карта

Архитектура карты активности клиентов Битрикс24

Page 24: Потоковая обработка событий клиентов и их отображение на интерактивной карте

Apache Spark Streaming

1. Собираем дискретные RDD из Kinesis

2. Определяем координаты по IP-адресу

3. На одной ноде формируем хэш-таблицу геоточек и

доменов

4. Выгружаем json-для серверного кластеризатора

5. Отдаем кластеризатором результаты в карту

Page 25: Потоковая обработка событий клиентов и их отображение на интерактивной карте

Яндекс.Карты

1. Нанести все объекты (десятки тысяч) на карту — очень медленно

2. Встроенная кластеризация (ObjectManager) - медленно

3. Серверная кластеризация (RemoteObjectManager) — отлично!

Алгоритм простой: разбиваем карту на прямоугольники и определяем

среднюю точку (центроид) в каждом

Page 26: Потоковая обработка событий клиентов и их отображение на интерактивной карте

Клиенты Битрикс24

www.bitrix24.ru/online-domains-map

Page 27: Потоковая обработка событий клиентов и их отображение на интерактивной карте

Текущая активность клиентов

1. Собираем дискретные RDD из Kinesis – 30 сек шаг

2. Определяем координаты по IP-адресу, кэшируем

3. На одной ноде формируем хэш-таблицу геоточек и

доменов в памяти, с агрегацией

4. Храним ВСЕ хиты каждой геоточки, вытесняем по

времени (LinkedList)

5. Астрономия — терминатор дня/ночи

6. Выгружаем json-для серверного кластеризатора

7. Отдаем кластеризатором результаты в карту

Page 28: Потоковая обработка событий клиентов и их отображение на интерактивной карте

Текущая активность клиентов Битрикс24

www.bitrix24.ru/online-domains-map

Page 29: Потоковая обработка событий клиентов и их отображение на интерактивной карте

Текущая активность клиентов Битрикс24

www.bitrix24.ru/online-domains-map

Page 30: Потоковая обработка событий клиентов и их отображение на интерактивной карте

Скорость сайта клиента на Битрикс

1. Собираем хиты из Amazon Kinesis в Redis

2. Хит содержит метрики js navigation timing.

3. Храним последние 1250 хитов (redis list)

4. Удаляем 20% самых долгих

5. Рассчитываем медиану времени отображения

страницы в кластере

6. Отдаем на карту, jsonp, RemoteObjectManager

Page 31: Потоковая обработка событий клиентов и их отображение на интерактивной карте

Скорость сайта клиента на Битрикс

Page 32: Потоковая обработка событий клиентов и их отображение на интерактивной карте

Скорость сайта клиента на Битрикс

Page 33: Потоковая обработка событий клиентов и их отображение на интерактивной карте

Скорость сайта клиента на Битрикс

Page 34: Потоковая обработка событий клиентов и их отображение на интерактивной карте

Скорость сайта клиента на Битрикс

Page 35: Потоковая обработка событий клиентов и их отображение на интерактивной карте

Скорость сайта клиента на Битрикс

Page 36: Потоковая обработка событий клиентов и их отображение на интерактивной карте

Спасибо за

внимание!

Вопросы?

Александр Сербул@AlexSerbul

[email protected]