В докладе представлен общий обзор архитектуры и взаимосвязи компонентов действующей системы статистики и рейтингов LiveJournal.com. Рассмотрены разработанные методы сбора, обработки и хранения данных с учетом их специфики и объема, а также требуемого функционала. Проанализирована целесообразность выбора хранилища на основе реляционных баз и альтернативных способов хранения, заточенных под конкретную задачу, преимущества и недостатки перехода на файловую модель хранения. Вкратце затронуты вопросы администрирования и отказоустойчивости, а также методы расширения функциональности системы, возникающие проблемы и пути их решения
2. LiveJournal.com Stats
Статистика посещений журналов и записей
(за час, за день, за месяц):
по хитам,
по посетителям,
по читателям.
Статистика комментариев к записям.
Списки недавних посетителей — «Мои гости».
Другие счётчики.
Рейтинги журналов и записей за период.
3. Входные данные
Количество соединений с LJ.com 1000
Скорость поступления событий 800-1200 в сек
Отфильтрованные события ≈ 50%
Количество сообщений за сутки 50 ∙ 106
Объем данных за сутки 16 Gb
4. LiveJournal.com Stats
LJ.com Collector Server Counter Server
Counters
Hits
Apache
mod_ljstats
Comments
...
Mobile
File
... Storage
Events
Filter
Reader
Database Server
Events
PostgreSQL
Storage
5. Hit Stats Log
Id Hits Visitors Readers
... 1001
Size
7 4 3
A B C D 1002 1003 1004 ...
Hit Stats Table
Index File Id Id Id
... 1001
Offset
1002
Offset
1003
Offset ...
Data File Hits Visitors Readers Hits Visitors Readers
... 7 4 3 15 3 2
...
Uniques ... A B C D 1002 1003 1004 B C E 1003 1005 ...
6. Log
id hits visitors read id hits visitors read
... 101 7 3 2
A C D 102 104
102 5 2 2
B C 103 104 ...
Index
id id id
... 101
offset
102
offset
103
offset ...
Old Table
Data
hits visitors readers hits visitors readers
... 10 3 2 20 4 3 ...
Uniques
... B C D 101 102 A C D E 101 102 105 ...
Index
id id
... offset offset
New Table
101 102
Data
hits visitors readers hits visitors readers
... 17 4 3 25 5 ?
Uniques
... A B C D 101 102 104 A B C D E
7. Счетчик Hit Stats
Журналы Записи
День Месяц День Месяц
Число ключей 1,5 M 5M 3M 27 M
Число
80k 700k 10k 10k
посетителей
Размер таблицы 300 Mb 4 Gb 400 Mb 8 Gb
Время пересчѐта 10 сек. 4 мин. 20 сек. 30 мин.
9. LiveJournal.com Ratings
Журналы Записи
Число ключей Все из статистики 2000
Размер на диске 700 Mb 1 Mb
Интервал пересчѐта день час
Время пересчѐта ≈ 15-20 мин.