Сервис сбора статистики
-
Демон написан на go ( golang.org )
запуск демона: ./statdaemon.sh --port=7001 [--logs=statdaemon.log] [--debug] $PWD/statdaemon []
Слушаем порт http, goroutine: читаем запрос, пишем в канал goroutine: читаем из канала, пишем в БД по достижении объема
Запущено это под nginx как прокси
-
Фронтенд
главная справка либы рега пользователей
-
ЛК просмотр статистики google charts https://google-developers.appspot.com/chart/interactive/docs/gallery/annotatedtimeline?hl=en https://code.google.com/apis/ajax/playground/?type=visualization#annotated_time_line
пользователь может задать выборку по дате указать срез по набору мета данных ( напр. user_id )
-
Протокол
http запрос на адрес
параметры запроса (get или post):
-
?project_id=12 ID проекта
-
?type=wins Название статистики
-
&value=42 установить значение
-
&count=1 увеличить счетчик
мета данные (все другие переданные параметры)
- &user_id=1452
- &bot_id=81
подпись
- &sig=32df3acb3442
-
-
Коллбеки
коллбек работает только для count
для статистики можно установить коллбек, который будет вызван тогда, когда для определенного слайса будет достигнуто некое пороговое значение условия можно объединять в И или ИЛИ
настройки коллбека
- статистика - wins
- значение статистики - 1000
- слайс - user_id
коллбек будет вызван в тот момент, когда значение статы wins с параметром user_id станет равным или больше 1000
url http://game.com/stat_callback.php параметры вызова: ?project_id=12&name=wins&sig=32df3acb3442&user_id=1452&value=1001&callback_id=84
вызов ожидает ответ {result:ok} в случае, если такой ответ получен, стата по данному слайсу помечается как отправленная, и больше не отправляется если же происходит ошибка, то сервис пытается еще раз запросить этот коллбек ведется лог вызовов коллбеков
-
хранение
сохраняем денормализованные meta в самой stat шардим по created_at
Запросы на выборку попадают на демон приложения, он выбирает из БД, обсчитывает и отвечает.