网站统计-设计思路(访客数,浏览量,平均访问时长,平均同时在线人数,最高同时在线人数)

前言

网站做好了,领导让求几个指标,网上找了许久。
两个思路:
1,百度腾讯等,提供了统计的产品接口,可以直接使用,十分方便。
但是使用的方式是把数据放到他们的服务器上让他们去分析,这个接受不了。
2,网上的大致的实现方案:双埋点加记录分析。下面是这种方案的具体设计。
3,补充,在项目里添加网关统计也是很好的一种处理方案。

实际情况:

  1. 创建完数据库表格,需求给砍了。。。这里记录一下,因为还没写代码,后面的一些坑还没考虑;
  2. 没事时候基本开发完了,领导考虑是否加载统计模块了。
  3. 后面可能需要联调
  4. 后续功能上线了,但是领导给的指标得到数据并不光彩,不予展示,倒是最后额外添加的小功能用上了。

需求

  1. 访客数:指在统计日访问招商平台的用户数量(同一端口用户一天登陆N次只计算一个),以次为单位。(ps:跟正常的不太一样)
  2. 浏览量,指统计日平台用户点击查看的页面总数(同一用户在24小时内每打开一个页面或刷新一次页面被计为1次浏览量),以次为单位。
  3. 平均访问时长,指平台在统计日用户平均访问时间。以分钟为单位。
  4. 平均同时在线人数:指平台在统计日平均同时在线人数。以个为单位。
  5. 最高同时在线人数:指平台在统计日最高同时在线人数,以个为单位。
  6. 有关概念解释定义参考

环境:
springboot + vue,使用nginx代理服务器部署前台静态文件,同时转发后台接口到集群处理。

后台

浏览量,访客数

思路:记录每个页面打开即可,参与后面的统计和分析。

表1:访问页面打开记录表(id,place,ip,user_id,user_name,create_time, env, info)stat_open

表2:统计表,浏览量,访客数(以天为单位,统计存储结果)(id,day,num)不存也没问题。

补充,表1,历史数据可以考虑转储,或者是直接使用es存储。

平均访问时常,平均同时在线人数,最高同时在线人数

思路:
1,使用redis存储当前在线用户,每次调用可以看作浏览了一分钟,redis刷新过期时间。(ps:直接统计session方案也不错,但这jb项目里session给弃用了)
2,根据redis记录可以分析得到用户浏览开始、结束时间,范围是网站还是网页看怎么统计了。
3,为方便数据处理,可以记录每个页面(或是网站)每分钟的访问人数。

表3:开始访问页面时间,离开页面时间(id,place,ip,user_id,user_name, begin_time, end_time, env, info,len_min)

表4:统计表:平均访问时常,平均同时在线人数,最高同时在线人数(id,day,age_len_visit_min, acu, pcu)

表5:统计记录表:每分钟的同时在线人数。 (id,min_time, num)

redis, 使用hash结构,存储用户访问开始时间,刷新时间即可。
ps: 或直接存到redis里面,使用redis的过期订阅机制,进行被动的触发,这种效果最好,

  • 消息队列也不错,

前台

  1. 埋点1:每个页面初始化时调用。
  2. 埋点2:每个页面30秒调用一次后台接口。

版本记录:
版本1:初步设计,数据库建立阶段。
版本2:代码初步实现,处理完成数据收集阶段代码。
版本3:jwt解析完成,统计查询方法内容完成,等待和前台对接联调。

你可能感兴趣的:(web基础,java)