InfluxDB-数据看板实现流程:从数据采集到可视化展示
数据看板的实现涉及到多个步骤和技术组件,以下是基于提供的知识库内容,详细解释数据看板(特别是30日活跃用户数趋势)的实现过程:
1. 数据来源
所有用户行为数据通过网关进行数据埋点,并通过消息队列(MQ)发送到InfluxDB进行存储。具体流程如下:
- 网关数据埋点:在网关处捕获用户的所有请求和响应。
- MQ消息发送:将这些行为数据通过消息队列发送到InfluxDB。
- InfluxDB存储:最终保存日志数据到InfluxDB的
log
measurement中。
2. 数据清洗
为了统计30日活跃用户数趋势,需要对存储在InfluxDB中的用户行为数据进行清洗和统计。具体步骤如下:
- 定时任务:使用XXL-JOB定时任务框架,设定每天的特定时间点(如01:00, 08:00, 13:00, 18:00, 23:00)执行数据清洗任务。
- 查询统计:
- 如果当前时间在0-6点之间,统计昨天的日志数据。
- 如果已经存在当天的统计数据,则移除重新统计。
- 查询
log
表中当天的user_id
去重后的总个数,得到当天的总活跃用户数。 - 查询
log
表中请求地址包含register-user
且响应状态码为200的记录总数,得到新注册活跃用户总数。 - 计算旧的活跃用户总数 = 总活跃数 - 新注册活跃用户总数。
- 保存结果:将统计结果保存到MySQL的
tab_dau
表中。
3. 数据展示
在管理后台中,通过point-web
模块提供的数据接口获取用户行为统计数据并展示。具体步骤如下:
- 前端界面:使用图表(如折线图)展示30日活跃用户数趋势,并同时展示环比上周、环比上期、30日合计、日均值等信息。
- 后端接口:通过
point-web
模块提供的RESTful API接口获取统计数据。 - 数据请求:使用F12工具查看请求地址信息,确保前后端交互正常。
4. 技术组件
- InfluxDB:用于高效存储和查询时间序列数据。
- XXL-JOB:用于定时任务调度,执行数据清洗和统计任务。
- MQ(消息队列):用于异步传输数据,保证系统的高可用性和性能。
- MySQL:用于长期存储统计数据,便于后续查询和展示。
- Spring Boot:用于构建后端服务,管理InfluxDB连接和数据操作。
- 前端框架:如Vue.js或其他前端框架,用于构建可视化界面。
5. 实现细节
- 数据清洗SQL:
SELECT COUNT(DISTINCT(user_id)) as user_id FROM log WHERE time > #{begin} AND time < #{end};
- 新用户统计:
SELECT COUNT(*) as new_users FROM log WHERE time > #{begin} AND time < #{end} AND request_path LIKE '%register-user%' AND response_status = 200;
6. 测试验证
- 定时任务执行:在XXL-JOB管理控制台中手动触发用户日活跃数任务,检查
tab_dau
表中是否有新的统计数据。 - 前端页面更新:刷新管理后台页面,确认30日活跃用户数趋势图表是否更新显示最新的统计数据。
通过以上步骤和技术组件的配合,实现了高效、准确的30日活跃用户数趋势数据看板。
数据看板的实现过程是:通过网关捕获用户行为数据并经由消息队列发送至InfluxDB存储;使用XXL-JOB定时任务框架定期清洗和统计InfluxDB中的数据,将结果保存到MySQL中;最后,通过point-web
模块提供的API接口获取统计数据并在前端以图表形式展示,从而实现30日活跃用户数趋势的可视化。