我們目前對每天的使用者訪問量,使用者活躍度的統計僅僅是用growingio,統計得不是很準確。因此需要自己在後台做使用者訪問記錄,以便分析使用者行為,選擇hbase資料庫做使用者行為記錄。
hbase資料庫裡面,每個系統每天的訪問日誌記錄在一張表上,由於hbase只能按照rowkey來快速檢索資料,並且rowkey是按照字典順序儲存的,是占用記憶體的。因此日誌表的rowkey的設計就是重點了。最終採用的方案是12位使用者id+8位時間戳+2位使用者訪問一級目錄+2位使用者訪問二級目錄,整個占用24個位元組,在64位系統中不浪費記憶體空間。使用者id是連續遞增的整數轉成的12位字串。8位時間戳是採用從當天凌晨起的毫秒數轉成8位字串。
日誌表裡面記錄1.訪問的引數,方便重現問題。2.返回的使用者提示,方便我們分析介面呼叫失敗原因。3.使用者訪問的成功失敗結果4.使用者訪問的ip。5.使用者訪問的作業系統。
實際執行時,需要根據當前的時間和日誌的時間比對,如果日期發生了變化,需要重新生成新的一天的日誌表。這裡涉及執行緒同步的問題,可以用synchronized來解決。還涉及不同機器同步的問題,有可能不同機器都在同時新建日誌表,這個時候的處理就要注意了,先判斷hbase中有沒有日誌表,即使沒有,在建立日誌表的時候也可能失敗,因為其他的機器在本機器判斷日誌表存在後,建立了日誌表。
記錄使用者訪問次數
在servlet中應用servletcontext介面,servlet容器在啟動乙個web應用時,會為它建立乙個servletcontext物件。當servlet容器終止乙個web應用時,servletcontext物件也會被銷毀,所以該物件與web應用程式有同樣的生命週期 在servletcont...
記錄使用者登入日誌
我們可以在專案中,實現使用者登入日誌記錄。簡單實現方法,如下 在資料中建立一張表,儲存一些相關的資訊。setansi nulls ongo setquoted identifier ongo create table dbo loginlog loginlogid int identity 1 1 ...
跟蹤記錄使用者
1 標記承載使用者身份的http請求首部 form 存放email user agent 監聽瀏覽器 3 使用者登入 4 胖url,開始進入 的時候,會生成乙個標識,加在每個a標籤上,當訪問此網頁的所有鏈結時,伺服器識別出標識知 道還是這個客戶,1缺點 1.不美觀,2.對伺服器生產額外複雜 3.不能...