因為工作需要,準備開發(fā)一個網(wǎng)站統(tǒng)計系統(tǒng)(感謝 ztotem,liy 同學大力支持)。
該系統(tǒng)主要功能:統(tǒng)計網(wǎng)站中加了計數(shù)器代碼的頁面每天的PV、UV、IP(精確到小時) ,另外需要分析頁面來源網(wǎng)站的一些數(shù)據(jù) ……
初步設計了架構:
大概解讀一下:
1.統(tǒng)計代碼是統(tǒng)一的,所有頁面都使用統(tǒng)一的代碼,類似 Google Analytics 的那種:
2.用戶訪問頁面,觸發(fā)統(tǒng)計代碼,只是在服務器上記錄下一行l(wèi)og文本數(shù)據(jù)。如下:
每個頁面的每個用戶的每次訪問都只是記錄一行l(wèi)og文本數(shù)據(jù),文本數(shù)據(jù)可以按照小時分文件,按照url的不同分目錄,這樣將每個文件的大小進行控制。
這一行l(wèi)og數(shù)據(jù)中包括:
訪問頁面時間(2009-12-01 00:00:00),
訪問頁面URL(www.google.com),
唯一用戶ID(35996674711058921174,
由統(tǒng)計代碼JS文件生成Cookies保存在用戶本地),
用戶IP地址(121.28.39.163),
來源地址(http://www.baidu.com/s?wd=google),
用戶操作系統(tǒng),瀏覽器,屏幕等等信息(均由統(tǒng)計代碼JS文件獲?。?#8230;…
每個頁面的每個用戶的每次訪問都只是記錄一行l(wèi)og文本數(shù)據(jù),文本數(shù)據(jù)可以按照小時分文件,按照url的不同分目錄,這樣將每個文件的大小進行控制。
測試發(fā)現(xiàn),因為訪問量太大,直接寫log文件,服務器IO根本來不及,總是丟失數(shù)據(jù), ztotem同學想出了先寫緩存,再由緩存排隊寫log文件的辦法。
3.另外開發(fā)一個后臺處理程序,來處理這些log文件。(以下form為示例,實際應該是一直默默運行的services)
通過該程序的分析,將相關數(shù)據(jù)保存至數(shù)據(jù)庫中。
數(shù)據(jù)庫的設計如下:
4.管理后臺再直接調用數(shù)據(jù)庫里的相關數(shù)據(jù)形成圖表顯示: