applogs流量数据项目学习
一、 项目介绍
项目的功能主要是面向App开发商提供App使用情况的统计服务 主要是基于用户启动app的统计分析,app只要启动就会上报一条日志记录 (启动日志),当然也会有其他的日志比如说页面访问日志、错误日志等
源码参考github: https://github.com/CodeTxp/appLogsPro1
二、完成的工作效果主要有
- 统计App(一段时间)新增用户的数目 如:一周内的每天的新增用户数目 五周内每周的新增用户数目等等
- 统计App(某段时间)的活跃用户:就是指定时间段内打开过app的用户
- 统计App的沉默用户数量 比如两天内没有启动过app 的用户就算是沉默用户
- 统计App的各个版本的新增用户、活跃用户、启动次数(或者叫版本分布)
- 统计App的回流用户 如本周回流用户指的是:上周没有启动而本周启动的用户
- 统计App连续n周活跃用户数目(连续n周 每周至少启动一次)
- 统计App忠诚用户的数目(比如定义为连续5周以上活跃的用户为忠诚用户)
- 统计App近期流失用户(比如定义为连续n(2<=n<=4)周没有启动的用户)
- 统计App留存用户数目 某一段时间的新增用户,经过一段时间后,仍然是app的用户
- 统计用户新鲜度 比如定义每天启动app的新老用户比例
三、涉及到的技术以及架构
java hadoop hive flume kafka ssm框架
技术框架
四、实现
-
公共模块的实现 (app-analyze-common模块):包括相关的日志实体
AppBaseLog
AppErrorLog
AppEventLog
AppLogEntity
AppPageLog
AppStartupLog
AppUsageLog -
Web收集日志程序的编写(app-logs-collect-web)
下面来具体的分析一下,收集日志的程序的编写首先涉及到的关键的点有a、修正时间
b、基本属性复制
c、处理ip地址问题
d、发送log给kafka主题
1、首先为什么要进行修正时间的操作?
因为客户端上报日志的时间可能会与服务器端的时间不统一、比如昨天的日志今天才上报,日志的时间是昨天的,但是确实今天上报的,在这种情况下就要进行时间的修正,将时间修正为服务器端的时间。
2、基本属性复制是干嘛的?
它主要完成的是Log实体中公共部分属性和Log类中间属性的复制 通过反射机制
3、处理ip地址问题完成的主要是什么问题?
地理工具类,实现通过ip查找地址区域
然后发送log给kafka的主题
- Flume在这个项目中的相关应用