1. 程式人生 > >hbase記錄使用者訪問日誌

hbase記錄使用者訪問日誌

我們目前對每天的使用者訪問量,使用者活躍度的統計僅僅是用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中有沒有日誌表,即使沒有,在建立日誌表的時候也可能失敗,因為其他的機器在本機器判斷日誌表存在後,建立了日誌表。