Александр Крашенинников, Badoo
Разгоняем обработку событий до 1.6М/сек. Опыт Badoo
Темы доклада:
- Зачем собирать статистику
- Как это делать
- Как показывать и анализировать
Зачем собирать статистику
- Мониторинг жизнеспособности проекта
- давать ответы на вопросы бизнеса
- хочешь улучшить — измерь
Жизненный цикл статистики
1. Define
Что собираем?
- Бизнес-метрики приложения
- Полутехнические — инсталляции приложений, UX
- Трекинг поведения пользователей
2. Collect
Статистика отсылается одновременно с бизнес-событием, но отдельным потоком.
Доставка событий
- конвейер обработки — внешняя система. Так лучше, потому что статистику создают микросервисы.
- статистика отвязана от хранилищ для бизнес-логики
- данные из контекста приложения переносим вовне
Нужен транспорт. Выбираем его под задачу и мощности. Аспекты: гарантии доставки, биндинги для языков программирования, масштабируемость.
Варианты: РСУБД, Flume, Kafka, LSD.
В Badoo используют LSD — Live Streaming Daemon.
3. Process
Что хотим получить из данных?
- Построить графики с долгосрочной историей
- выполнять ad-hoc запросы
Как рисовать график?
- из сырых данных
- из time series
Будем использовать гибридный подход: от каждого свои преимущества. Хвост из сырых данных и долгосрочный timeseries.
Метрики росли, компания последовательно переходила по технологиям:
- MySQL
- Sharding
- Hadoop
- Spark
- ClickHouse
ClickHouse
«Инструмент классный, документация ваще огонь, я сам туда писал».
Итоги фазы:
- Научились выбирать технологии под масштаб
- Выбрали ClickHouse и пока не упёрлись в потолок
4. Present
Доступ к данным
- Дашборды из time series
- drop detection — самое необычное поведение пользователей
- anomaly detection. Для каждой метрики вычисляем предсказание и threshold. Если потом метрика выходит за пределы, включаем alert.
Результаты фазы Present:
- дашборды с графиками
- ручной мониторинг метрик
- автоматика Anomaly Detection