项目简介:为交管部门提供重点车辆信息的实时监控与状态分析,针对客户统一管理车辆、驾驶员、企业的需求给出的行业解决方案。
主要技术:springboot/mybatis-plus/mysql/sharding-sphere/websocket/javamelody/datahub/redis/poi/ftp 等
解决难点:
1、一个城市重点车辆数量在3w左右,每天产生的gps数据在9kw-1E,远远超出了mysql单表的瓶颈,存储及查询都极为困难,利用sharding-sphere进行水平分表,性能和效率得到了很大的提升
2、车辆分布热力图功能中,由于gps实时点位在2w左右,页面连下载带渲染要4秒,考虑通过抽稀或聚类算法对点位进行稀释并附带权重,选择了Kmeans,处理过后速度达到了1秒,但还是太长,满足不了客户需求,又把聚类这一步放到了后台任务做,产出的数据存入redis,页面接口直接取redis中的数据做展示,这样就达到了200毫秒左右
3、通过websocket实现后台主动向前台推送数据,避免了前台过多频繁的定时器任务
4、由于数据量偏大,做了很多关于索引优化及sql优化,提升了接口相应速度,完善了用户体验