Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

414,456 views

Published on

Рассказываем о том, как мы в Badoo собираем статистику для каждого пользователя, обсчитываем каждое открытие страницы (и не только!), обрабатываем 120000 событий в секунду и планируем расширяться.
А также:
- как собирать события с тысяч серверов;
- как правильно распределять их для обработки на несколько серверов;
- как устроена система сбора простых логов и агрегированной статистики в Badoo;
- какие есть перспективы развития системы.

Доклад будет интересен любому человеку, который хочет построить подобную систему распределенного сбора и перераспределения статистики.

Published in: Technology
  • Be the first to comment

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

  1. 1. StatsCollector, или "Мама! Он и меня посчитал!" Старынин Валерий, Badoo.
  2. 2. В докладе будет рассказано: • как собирать события с тысяч серверов • как правильно распределять их для обработки на несколько серверов • как устроена система сбора простых логов и агрегированной статистики в Badoo • какие есть перспективы развития системы
  3. 3. Badoo это • Социальная сеть для поиска новых друзей • 200 млн. зарегистрированных пользователей • Работаем во всех странах мира • Мобильные приложения под Android, iOS, Windows, BlackBerry. А так же Wap и HTML5 версии • 2,5 датацентра: в Европе, Америке и Азии • Более 3 000 серверов
  4. 4. Событие в статистике - что это такое? • Действия пользователей • Действия модераторов • Действия скриптов • Ошибки • Отчеты о выполнении
  5. 5. Старая система сбора статистики USA Europe
  6. 6. StatsCollector • Структура • Типы данных • Варианты отчетов • Возможности • Мониторинг
  7. 7. Выбираем транспорт. Scribe! • Берет доставку на себя • Умеет перенаправлять куда нужно • Умеет делить потоки • Умеет резервировать • Наши C-шники могут поддерживать
  8. 8. Scribe USA Europe
  9. 9. Глобальные события USA Europe
  10. 10. Локальные события USA Europe
  11. 11. Конфигурация сервера PHP PHP Scribe Scribe-Роутер
  12. 12. Роутер и точка назначения Scribe- роутер Scribe Scribe Scribe Scribe
  13. 13. Релеи Scribe- роутер Scribe- релей Scribe- релей Scribe- релей Scribe- релей Scribe- роутер
  14. 14. События и отчеты • Событие — источник данных • Отчет — результат сбора данных • 1 событие — много отчетов • Типы отчетов (логи, 2 вида агрегации) • Автоматика в базах данных
  15. 15. Отправка события
  16. 16. Конфиг отчета - лога
  17. 17. Отчет - лог 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
  18. 18. Конфиг отчета - статистики
  19. 19. Отчет - статистика 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
  20. 20. Конфиг отчета multicounter
  21. 21. Отчет - 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
  22. 22. Автоматика в БД • В имени таблицы должна быть дата • Таблицу надо не забыть создать • А что, если надо поменять типы/набор данных? • А можно ли подчищать старые данные?
  23. 23. Автоматика в БД - пример
  24. 24. Увеличение объемов данных • Больше пользователей, больше критериев — больше данных! • Разбор данных из файлов — можно распараллелить • Доставка данных в БД — в несколько потоков
  25. 25. А почему все так медленно? • Промежуточная агрегация — теряем 10 минут • Графики нужно строить оперативно • Вообще хочется быстрее!
  26. 26. FastStats • Ускоряем доставку до <30 секунд • Делаем все на файлах • Транзакции и файлы — это реально! • Полностью прозрачный переход к новому
  27. 27. FastStats Scribe
  28. 28. Мониторинг • Работоспособность Scribe'ов • Количество файлов во временных хранилищах • Количество неразобранных файлов • Количество временных таблиц • Количество файлов по отчетам • Скорость вставки в базы
  29. 29. Мониторинг — графики
  30. 30. Мониторинг — скорость
  31. 31. Мониторинг — ошибки
  32. 32. Цифры • 120 000 событий в секунду • Собираем с 3 000 серверов • 300 отчетов • 4 сервера-роутера и 4 сервера для StatsCollector'а
  33. 33. Спасибо за внимание! Вопросы? http://fb.com/BadooMoscow http://vk.com/badoocom http://twitter.com/BadooDev http://habrahabr.ru/company/badoo

×