Upload
badoo-development
View
408.656
Download
0
Embed Size (px)
DESCRIPTION
Рассказываем о том, как мы в Badoo собираем статистику для каждого пользователя, обсчитываем каждое открытие страницы (и не только!), обрабатываем 120000 событий в секунду и планируем расширяться. А также: - как собирать события с тысяч серверов; - как правильно распределять их для обработки на несколько серверов; - как устроена система сбора простых логов и агрегированной статистики в Badoo; - какие есть перспективы развития системы. Доклад будет интересен любому человеку, который хочет построить подобную систему распределенного сбора и перераспределения статистики.
Citation preview
StatsCollector, или"Мама! Он и меня посчитал!"
Старынин Валерий,Badoo.
В докладе будет рассказано:
• как собирать события с тысяч серверов
• как правильно распределять их для обработки на несколько серверов
• как устроена система сбора простых логов и агрегированной статистики в Badoo
• какие есть перспективы развития системы
Badoo это
• Социальная сеть для поиска новых друзей• 200 млн. зарегистрированных пользователей• Работаем во всех странах мира• Мобильные приложения под Android, iOS, Windows,
BlackBerry. А так же Wap и HTML5 версии• 2,5 датацентра: в Европе, Америке и Азии• Более 3 000 серверов
Событие в статистике - что это такое?
• Действия пользователей• Действия модераторов• Действия скриптов• Ошибки• Отчеты о выполнении
Старая система сбора статистикиUSA Europe
StatsCollector
• Структура• Типы данных• Варианты отчетов• Возможности• Мониторинг
Выбираем транспорт. Scribe!
• Берет доставку на себя
• Умеет перенаправлять куда нужно
• Умеет делить потоки
• Умеет резервировать
• Наши C-шники могут поддерживать
ScribeUSA 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_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
Автоматика в БД
• В имени таблицы должна быть дата• Таблицу надо не забыть создать• А что, если надо поменять типы/набор данных?• А можно ли подчищать старые данные?
Автоматика в БД - пример
Увеличение объемов данных
• Больше пользователей, больше критериев — больше данных!
• Разбор данных из файлов — можно распараллелить• Доставка данных в БД — в несколько потоков
А почему все так медленно?
• Промежуточная агрегация — теряем 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