博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于吃掉物理的二次聚合无法实现的需要之旁门左道实现法
阅读量:5966 次
发布时间:2019-06-19

本文共 1281 字,大约阅读时间需要 4 分钟。

需求:

吃掉物理想要统计一下,在指定时间内,所有的吃掉物理用户(包括老师,学生,家长等),按访问次数进行一下聚合,显示每个访问次数对应的人数,可以进一步获知僵尸用户和活跃用户的个数,以后可能扩展为想知道具体是哪些人。要的报表如下:

2018-06-01至2018-09-01 (其中天表示这个用户共使用了多少天,一天使用N次记一天)

100天 56人
98天 467人
96天 3442人
...

1天 29034人

=======================================================================================================

分析与实现:

1、因es无法实现二次聚合(或者说我们不会),现在能想到的方法是不完全依赖于ES,要使用原来的技术体系与ES结合的思路实现。

2、设计一个统计任务的概念,就是说选择一段时间后,点开始统计,就分配一个统计任务(时间戳即可 chidiaowuli_20180809082230),记录到mysql中,界面上显示,现在后台统计中,请稍侯...

3、lua将任务ID,时间戳+2018_06_01-2018_09_01 写入到一个ssdb的queue中,名称为tongjifenxi_queue

4、开发一个python程序一直while true进行循环,监控到有内容,就准备开始进行统计分析,发现前缀是吃掉物理就开始吃掉物理的逻辑,后期可以扩展为支持其它业务。

如果没有找到就休息3秒。

5、将吃掉物理的用户在这段时间内访问的人员,按老师,学生,家长查三次,分别按分页读取,一次100个。这样就比直接从数据库中查询所有的吃掉物理用户优化多了,因为没访问的直接就不再统计了!

6、将100个用户,调用elasticsearch进行统计这些人在2018_06_01-2018_09_01时间范围内的访问天数。

7、获取访问天数后,将结果记录到ssdb,具体设计如下:

(1)hash记录真实情况

hashmap 名称 : chidiaowuli_acess_count_时间戳_98

key: identity_id+'_'+person_id
value: 1
(2) 需要知道哪些hashmap是这次相关的
zset name: chidiaowuli_acess_count_zset_时间戳
key : chidiaowuli_acess_count_时间戳_98
score: 每次增加一个人员访问天数时,需要首先增加hashmap的内容,然后取出 zset中相关的score并加1.

8、显示需求要的列表:直接从zset中读取即可。如果想要钻取,我们可以读取对应的hashmap.

9、垃圾回收与清理

对于以前的统计分析任务,可以删除,删除时要按mysql-->ssdb zset --> ssdb hashmap的方式找到最后的记录,删除之,然后再回退删除上一级,最终删除mysql数据。

10、至此,所有流程完成。

 

转载地址:http://nqmax.baihongyu.com/

你可能感兴趣的文章
UVA 714 Copying Books
查看>>
常用的激活函数
查看>>
【Java学习】网络编程1
查看>>
sqlcmd
查看>>
Excel 已经检测到"XXX.xsl"是SYLK文件,但是不能将其加载的问题
查看>>
(基础篇)PHP获取时间、时间戳的各种格式写法汇总
查看>>
JAVA泛型详解2 转载
查看>>
div+CSS编程技巧
查看>>
Android 8.0 Settings新添加的重写getMetricsCategory
查看>>
#!/usr/bin/env python与#!/usr/bin/python的区别
查看>>
TSM对Oracle数据库备份脚本
查看>>
了解HAProxy原理及参数
查看>>
基于开源技术的上网行为管理实现方案
查看>>
Python学习笔记四(Python OS模块)
查看>>
Google Glass是工具不是玩具
查看>>
f_bfree和f_bavail的区别
查看>>
Web前端开发必备:《Jquery实战》第3版 介绍
查看>>
优秀网页设计:25个最佳的摄影师作品网站
查看>>
JavaScript Book Plan
查看>>
牛人推荐的跨浏览器兼容性总结
查看>>