33
StatsCollector, или "Мама! Он и меня посчитал!" Старынин Валерий, Badoo.

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

Embed Size (px)

DESCRIPTION

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

Citation preview

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

StatsCollector, или"Мама! Он и меня посчитал!"

Старынин Валерий,Badoo.

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

В докладе будет рассказано:

• как собирать события с тысяч серверов

• как правильно распределять их для обработки на несколько серверов

• как устроена система сбора простых логов и агрегированной статистики в Badoo

• какие есть перспективы развития системы

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

Badoo это

• Социальная сеть для поиска новых друзей• 200 млн. зарегистрированных пользователей• Работаем во всех странах мира• Мобильные приложения под Android, iOS, Windows,

BlackBerry. А так же Wap и HTML5 версии• 2,5 датацентра: в Европе, Америке и Азии• Более 3 000 серверов

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

Событие в статистике - что это такое?

• Действия пользователей• Действия модераторов• Действия скриптов• Ошибки• Отчеты о выполнении

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

Старая система сбора статистикиUSA Europe

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

StatsCollector

• Структура• Типы данных• Варианты отчетов• Возможности• Мониторинг

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

Выбираем транспорт. Scribe!

• Берет доставку на себя

• Умеет перенаправлять куда нужно

• Умеет делить потоки

• Умеет резервировать

• Наши C-шники могут поддерживать

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

ScribeUSA Europe

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

Глобальные событияUSA Europe

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

Локальные событияUSA Europe

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

Конфигурация сервера

PHP

PHP

Scribe Scribe-Роутер

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

Роутер и точка назначения

Scribe-роутер Scribe

Scribe Scribe

Scribe

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

Релеи

Scribe-роутер

Scribe-релей

Scribe-релей

Scribe-релей

Scribe-релей

Scribe-роутер

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

События и отчеты

• Событие — источник данных• Отчет — результат сбора данных• 1 событие — много отчетов• Типы отчетов (логи, 2 вида агрегации)• Автоматика в базах данных

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

Отправка события

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

Конфиг отчета - лога

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

Отчет - лог

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

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

Конфиг отчета - статистики

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

Отчет - статистика

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

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

Конфиг отчета multicounter

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

Отчет - multicounter

ts country_id gender partner_id message_photo_abuse_deleted

message_photo_abuse_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

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

Автоматика в БД

• В имени таблицы должна быть дата• Таблицу надо не забыть создать• А что, если надо поменять типы/набор данных?• А можно ли подчищать старые данные?

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

Автоматика в БД - пример

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

Увеличение объемов данных

• Больше пользователей, больше критериев — больше данных!

• Разбор данных из файлов — можно распараллелить• Доставка данных в БД — в несколько потоков

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

А почему все так медленно?

• Промежуточная агрегация — теряем 10 минут• Графики нужно строить оперативно• Вообще хочется быстрее!

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

FastStats

• Ускоряем доставку до <30 секунд• Делаем все на файлах• Транзакции и файлы — это реально!• Полностью прозрачный переход к новому

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

FastStats

Scribe

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

Мониторинг

• Работоспособность Scribe'ов• Количество файлов во временных хранилищах• Количество неразобранных файлов• Количество временных таблиц• Количество файлов по отчетам• Скорость вставки в базы

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

Мониторинг — графики

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

Мониторинг — скорость

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

Мониторинг — ошибки

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

Цифры

• 120 000 событий в секунду • Собираем с 3 000 серверов• 300 отчетов• 4 сервера-роутера и 4 сервера для StatsCollector'а

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

Спасибо за внимание!Вопросы?

http://fb.com/BadooMoscow

http://vk.com/badoocom

http://twitter.com/BadooDev

http://habrahabr.ru/company/badoo