ݺߣ

ݺߣShare a Scribd company logo
Система
статистики и рейтингов
    LiveJournal.com


           Николаев Дмитрий, <SUP>
LiveJournal.com Stats
Статистика посещений журналов и записей
(за час, за день, за месяц):

 по хитам,
 по посетителям,

 по читателям.



Статистика комментариев к записям.

Списки недавних посетителей — «Мои гости».

Другие счётчики.

Рейтинги журналов и записей за период.
Входные данные

Количество соединений с LJ.com       1000

Скорость поступления событий     800-1200 в сек

  Отфильтрованные события            ≈ 50%

Количество сообщений за сутки       50 ∙ 106

    Объем данных за сутки            16 Gb
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
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    ...
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
Счетчик 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 мин.
GET http://ljstats-host/journal_stats?date=2010-09&journal_id=1001

                                                                   Binary Search
                                   journal_stats-2010-09.idx
...                                                  Id
                                          ...                 Offset        ...
journal_stats-2010-08-31.idx                        1001
journal_stats-2010-08-31.dat       journal_stats-2010-09.dat
journal_stats-2010-09.idx
journal_stats-2010-09.dat                       1           2           5
journal_stats-2010-09-01.idx                 Hits: 1     Hits: 2     Hits: 1
journal_stats-2010-09-01.dat
                                    ...    Visitors: 1 Visitors: 2 Visitors: 1
                                                                                  ...
...                                        Readers: 1 Readers: 0 Readers: 1

                                                                           JSON

                                   {
                                       "status" : "Ok",
                                       "result" : [
                                         ["time_id", "hits", "visitors", ...],
                                         [1, 1, 1, 1],
                                         [3, 2, 2, 0],
                                         [5, 1, 1, 1],
                                         [6, 4, 3, 0],
                                         ...
                                         [24, 1, 1, 0]
                                       ]
                                   }
LiveJournal.com Ratings

                        Журналы               Записи


  Число ключей       Все из статистики            2000


 Размер на диске          700 Mb                  1 Mb


Интервал пересчѐта         день                   час


 Время пересчѐта                   ≈ 15-20 мин.
LiveJournal.com Stats
               File System
                  Cache         Counter 1     If-Modified-Since



LJ.com                               Apache
                                               nginx 1




                                                                  BIG-IP
                                Counter 2
         Heartbeat                             nginx 2
                                    Apache
                                                      Nginx
                                                      Cache
 Collector 1      Collector 2



                   DRBD
Контакты

dmitry.nikolaev@sup.com

More Related Content

Система статистики и рейтингов LiveJournal.com

  • 1. Система статистики и рейтингов LiveJournal.com Николаев Дмитрий, <SUP>
  • 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 мин.
  • 8. GET http://ljstats-host/journal_stats?date=2010-09&journal_id=1001 Binary Search journal_stats-2010-09.idx ... Id ... Offset ... journal_stats-2010-08-31.idx 1001 journal_stats-2010-08-31.dat journal_stats-2010-09.dat journal_stats-2010-09.idx journal_stats-2010-09.dat 1 2 5 journal_stats-2010-09-01.idx Hits: 1 Hits: 2 Hits: 1 journal_stats-2010-09-01.dat ... Visitors: 1 Visitors: 2 Visitors: 1 ... ... Readers: 1 Readers: 0 Readers: 1 JSON { "status" : "Ok", "result" : [ ["time_id", "hits", "visitors", ...], [1, 1, 1, 1], [3, 2, 2, 0], [5, 1, 1, 1], [6, 4, 3, 0], ... [24, 1, 1, 0] ] }
  • 9. LiveJournal.com Ratings Журналы Записи Число ключей Все из статистики 2000 Размер на диске 700 Mb 1 Mb Интервал пересчѐта день час Время пересчѐта ≈ 15-20 мин.
  • 10. LiveJournal.com Stats File System Cache Counter 1 If-Modified-Since LJ.com Apache nginx 1 BIG-IP Counter 2 Heartbeat nginx 2 Apache Nginx Cache Collector 1 Collector 2 DRBD