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中有没有日志表,即使没有,在创建日志表的时候也可能失败,因为其他的机器在本机器判断日志表存在后,创建了日志表。

你可能感兴趣的:(hbase)