一、概述
在传统的数据分析平台中,如果我们想要分析近一年网站的用户增长趋势,通常需要手动导入数据,选择要分析的字段和图表,并由专业的数据分析师完成分析,最后得出结论。然而,本次设计的项目与传统平台有所不同。在这个项目中,用户只需要输入想要分析的目标,并上传原始数据,系统将利用AI自动生成可视化图标和学习的分析结论。这样,即使是对数据一窍不通的人也能轻松使用该系统。
二、介绍
问:什么是BI?
答:即商业智能(数据可视化、报表可视化系统)
传统BI平台需要按照以下步骤:
- 1.手动上传数据
- 2.手动选择分析所需要的数据行和列(由数据分析师完成)
- 3.需要手动选择所需的图表类型(由数据分析师完成)
- 4.生成图表并保存配置
在本项目所设想的智能BI平台:
与传统的BI不同,我们的解决方案允许用户(数据分析者)仅需导入最最最原始的数据集并输入分析目标(例如网站增长趋势),即可利用AI自动生成符合要求的图表和结论,从而显著提高分析效率。
三、项目准备
前端开发:
- nodejs
- WebStorm
后端开发:
- java
- maven
- idea
其他:
- mysql
- redis
- yarn
- git
注意:该项目用到的nodejs版本要大于16.14且小于18
四、需求分析
- 智能分析:用户输入目标和原始数据(图表类型),可以自动生成图表和分析结论
- 图表管理(增删改查)
- 图表生成的异步化(消息队列)
- 对接AI能力
五、架构图
基础流程:客户端输入分析诉求和原始数据,向业务后端发送请求。业务后端利用AI服务处理客户端数据,保存到数据库并生成图表。处理后的数据由业务后端发送给AI服务,AI服务生成结果并返回给后端,最终将结果返回给客户端展示。
缺图
上图的流程会出现一个问题:
假设一个AI服务生成图表和分析结果要等50秒,如果有大量用户需要生成图表,每个人都需要等待50秒,那么AI服务可能无法承受这种压力。为了解决这个问题,可以采用消息队列技术。
这类似与在餐厅点餐时,为了避免顾客排队等待,餐厅会给顾客一个取餐号码,让顾客可以先去坐下或做其他事情。等到餐厅叫到他们的号码时再去领取餐点,这样就能节省等待时间。
同样地,通过消息队列,用户可以提交生成图表的请求,这些请求会进入队列,AI服务会依次处理队列中的请求,从而避免了同时处理大量请求造成的压力,同时也能更好地控制资源的使用。
优化流程(异步化):客户端输入分析诉求和原始数据,向业务后端发送请求。业务后端将请求事件放入消息队列,并为客户端生成取餐号,让要生成图表的客户端去排队,消息队列根据AI服务负载情况,定期检查进度,如果AI服务还能处理更多的图表生成请求,就向任务处理模块发送消息。
缺图
六、技术栈
前端:
- react
- 开发框架 Umi + Ant Design Pro
- 可视化开发库(Echarts + HightCharts + AntV)<可视化会涉及到图表的生成>
- umi openapi 代码生成(自动生成后端调用代码)<前后联调开发>
后端:
- Spring Boot(使用开发模板,快速搭建基础框架,避免重复写代码)
- MySql数据库
- MyBatis Plus数据访问框架
- 消息队列&#x