一、需求:
最近做一个统计项目,项目要求统计不同店铺的当前在线用户数、平均访问时长、今日在线用户最高数等需求
二、准备工作:###
在开始实现具体功能之前,首先得弄清楚这些概念以及计算公式(大家有哪里不认同的,欢迎指正,微笑)
当前在线用户数:这个很好理解,即当前浏览该店铺的所有用户数,也就是大家经常讨论的uv
平均访问时长:所有用户访问时长之和/总的用户数
今日在线用户最高数以及相应的时间,精确到分钟:这个也很好理解,即今天同时浏览该店铺的最大用户数
最近15min浏览次数:即店铺在最近15min被打开页面的次数,也就是大家经常讨论的pv
近30日平均浏览次数、平均访问时长:该店铺30日总的浏览次数(总的pv)/ 30,平均访问时长=30总的访问时长/总的用户数
三、数据采集:
好了,现在概念应该都明白了,开始进入正题。首先聊下数据采集,目前,我采用的是埋点(包括心跳通知)的方法进行数据采集,一方面使用埋点对所收集的数据比较准确,另外对数据收集相对比较简单。我们使用了两个数据收集接口,第一个即每次打开一个页面都会调用一次的pv收集接口,该接口主要收集当前页面的id、url、标题、上一个页面的地址等信息,该接口会返回一个唯一的pvId,如果用户第一次访问,则会服务端会生成一个唯一的sessionid存放到cookie里面,这个sessionid就用于区分不同用户(这种统计存在一定的偏差:比如同一个用户用不同浏览器打开,会统计成多个用户,暂时忽略这种偏差)&#x