作为一个亿级的流量分析统计系统怎么能没有 PV / UV 这两经典的超级玛丽亚指标呢,话说五百年前它俩可是鼻祖,咳咳...,不好意思没忍住,回归正文,大猪在上一篇已经介绍了 小巧高性能ETL程序设计与实现 了,到现在,我们的数据已经落地到 Hbase 上了,而且日志的时间也已经写到 Mysql 了,万事都已经具备了,接下来我们就要撸指标了,先从两个经典的指标开始撸。
![9028759-0ac7512294a4e8f6.png](https://i-blog.csdnimg.cn/blog_migrate/9fe13765f9f363a7e41644fcea8704d3.webp?x-image-process=image/format,png)
我们先理一下整个程序的计算流程,请看大图:
![9028759-82e79d50bf6892b1.png](https://i-blog.csdnimg.cn/blog_migrate/006c373e058991abf346465baf095f33.webp?x-image-process=image/format,png)
开始计算是我们的 Driver 程序入口
开始计算之前检查监听 Redis 有没有收到程序退出通知,如果有程序结束,否则往下执行
首先去查询我们上篇文章的 ETL loghub 日志的进度的平均时间点
Switch 处是判断 loghub 的时间距离我们上次计算的指标时间是否相差足够时间,一般定义为3分钟时间之后,因为 loghub 的时间会有少量的波动情况
不满足则睡眠 30秒,可以自己控制Sleep范围。
满足则计算
上次指标计算结束时间
~(loghub时间 - 3分钟日志波动)
计算完成更新指标结果并且更新指标计算时间,然后回到第 2 点。