Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
StatsCollector, или
"Мама! Он и меня посчитал!"
Старынин Валерий,
Badoo.
В докладе будет рассказано:
• как собирать события с тысяч
серверов
• как правильно распределять их для
обработки на несколько серверов
• как устроена система сбора
простых логов и агрегированной
статистики в Badoo
• какие есть перспективы развития
системы
Badoo это
• Социальная сеть для поиска новых друзей
• 200 млн. зарегистрированных пользователей
• Работаем во всех странах мира
• Мобильные приложения под Android, iOS, Windows,
BlackBerry. А так же Wap и HTML5 версии
• 2,5 датацентра: в Европе, Америке и Азии
• Более 3 000 серверов
Событие в статистике - что это такое?
• Действия пользователей
• Действия модераторов
• Действия скриптов
• Ошибки
• Отчеты о выполнении
Старая система сбора статистики
USA Europe
StatsCollector
• Структура
• Типы данных
• Варианты отчетов
• Возможности
• Мониторинг
Выбираем транспорт. Scribe!
• Берет доставку на себя
• Умеет перенаправлять куда нужно
• Умеет делить потоки
• Умеет резервировать
• Наши C-шники могут поддерживать
Scribe
USA Europe
Глобальные события
USA Europe
Локальные события
USA Europe
Конфигурация сервера
PHP
PHP
Scribe Scribe-Роутер
Роутер и точка назначения
Scribe-
роутер Scribe
Scribe Scribe
Scribe
Релеи
Scribe-
роутер
Scribe-
релей
Scribe-
релей
Scribe-
релей
Scribe-
релей
Scribe-
роутер
События и отчеты
• Событие — источник данных
• Отчет — результат сбора данных
• 1 событие — много отчетов
• Типы отчетов (логи, 2 вида агрегации)
• Автоматика в базах данных
Отправка события
Конфиг отчета - лога
Отчет - лог
ts method platform_id hostname ts_db
2014-06-01 00:00:10 FastEvent 2 scripts15.ulan 2014-06-01 00:00:26
2014-06-01 00:00:22 FastEvent 2 scripts45.ulan 2014-06-01 00:00:48
2014-06-01 00:01:03 FastEvent 1 scripts6.mlan 2014-06-01 00:01:14
2014-06-01 00:01:03 LocalFastEvent 1 scripts6.mlan 2014-06-01 00:01:22
2014-06-01 00:01:10 FastEvent 2 scripts44.ulan 2014-06-01 00:01:39
2014-06-01 00:01:28 FastEvent 1 scripts47.mlan 2014-06-01 00:01:39
2014-06-01 00:01:28 LocalFastEvent 1 scripts47.mlan 2014-06-01 00:01:48
2014-06-01 00:01:33 FastEvent 2 scripts31.ulan 2014-06-01 00:02:05
2014-06-01 00:01:40 FastEvent 2 scripts17.ulan 2014-06-01 00:02:05
Конфиг отчета - статистики
Отчет - статистика
ts interface interface2 country_from country_to type count
2011-04-04 12:00:00 comet comet 13 13 read 10933
2011-04-04 13:00:00 comet comet 13 13 read 1698
2011-04-04 12:00:00 comet comet 13 13 send 9637
2011-04-04 13:00:00 comet comet 13 13 send 1168
2011-04-04 12:00:00 comet comet 13 19 read 6
2011-04-04 13:00:00 comet comet 13 19 read 2
2011-04-04 12:00:00 comet comet 13 19 send 3
2011-04-04 13:00:00 comet comet 13 19 send 1
2011-04-04 12:00:00 comet comet 19 13 read 1
2011-04-04 12:00:00 comet comet 19 13 send 1
Primary key
Конфиг отчета multicounter
Отчет - multicounter
ts country_id gender partner_id message_photo_
abuse_deleted
message_photo_ab
use_inappropriate
message_photo_
abuse_ spam
2014-04-17 14:31:00 50 2 1 1 0 0
2014-04-17 14:49:00 13 2 1 1 0 0
2014-04-17 15:08:00 13 2 1 0 1 0
2014-04-17 15:11:00 50 1 1 1 0 0
2014-04-17 15:25:00 13 1 1 1 0 0
2014-04-17 15:31:00 50 2 1 1 0 0
2014-04-17 15:34:00 50 1 1 1 0 0
2014-04-17 15:48:00 50 2 1 1 0 0
2014-04-17 15:57:00 50 2 1 2 0 0
2014-04-17 16:02:00 50 1 1 1 0 0
Primary key
Автоматика в БД
• В имени таблицы должна быть дата
• Таблицу надо не забыть создать
• А что, если надо поменять типы/набор данных?
• А можно ли подчищать старые данные?
Автоматика в БД - пример
Увеличение объемов данных
• Больше пользователей, больше критериев — больше
данных!
• Разбор данных из файлов — можно распараллелить
• Доставка данных в БД — в несколько потоков
А почему все так медленно?
• Промежуточная агрегация — теряем 10 минут
• Графики нужно строить оперативно
• Вообще хочется быстрее!
FastStats
• Ускоряем доставку до <30 секунд
• Делаем все на файлах
• Транзакции и файлы — это реально!
• Полностью прозрачный переход к новому
FastStats
Scribe
Мониторинг
• Работоспособность Scribe'ов
• Количество файлов во временных хранилищах
• Количество неразобранных файлов
• Количество временных таблиц
• Количество файлов по отчетам
• Скорость вставки в базы
Мониторинг — графики
Мониторинг — скорость
Мониторинг — ошибки
Цифры
• 120 000 событий в секунду
• Собираем с 3 000 серверов
• 300 отчетов
• 4 сервера-роутера и 4 сервера для StatsCollector'а
Спасибо за внимание!
Вопросы?
http://fb.com/BadooMoscow
http://vk.com/badoocom
http://twitter.com/BadooDev
http://habrahabr.ru/company/badoo

More Related Content

Доклад Валерия Старынина на DevConf 2014. "StatsCollector, или "Мама! Он и меня посчитал!"