文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/
1.背景
在之前的”多车辆实时迹展示方案”(https://www.cnblogs.com/naaoveGIS/p/8551915.html)文章中,我讲解了我们对多轨迹实时监测展示方案在前段的一些实践和对于后端架构的设计,但是在真实项目的落地过程中,我们基于此做了很多的优化,这里做一个简单的总结。
这里我将该项目大致做一个描述:公司某个项目中有一万两千辆车需要做实时监控,而且这些车24小时均会不间断进行GPS上报。所以其中涉及到GPS的对接、海量数据存储的设计方案、消息推送、前端展示、系列报警设计等。这其中的GPS对接、数据存储涉及等问题我在轨迹系列文章中均有描述,感兴趣的朋友可以看看,本篇着重描述信息推送和前端展示的优化。
2.GPS推送机制的设计
这里的消息推送并不是很复杂,所以我们并没有采用卡夫卡等成熟的消息机制架构,依然采用的是前篇中我进行了介绍的WebSocket方案。但是,有几点我们需要考虑:
a.前端为了播放效果,每次传入的GPS中一个车辆必须拥有2个以上的GPS数据(如果只有一个则是停留的)
b.我们有1万辆以上的车辆,每次推送给前端的数据不应该是所有的,即做成广播协议是不合理的。
针对这两个问题,我们分别做了解决:
a.采用redis进行GPS数据的实时存放,但是进行了存放规则设定,即redis中存放的轨迹只包含目前时间向前推移指定时间的轨迹量。比如,redis中永远存放的是此前三分钟的轨迹数据(时间长可设置)。这样可以累积一定量的轨迹后推送,以便实现播放效果,并且方便高效读取。
b.在消息推送中,我们根据humanID来进行数据推送的选择。不同人员要看到的车辆是不一样的,因humanID不同而不同。
在推送方案中我们还进行了其他优化:
a.通过心跳检查来进行socket连接保活。
b.前端播放时效与后台轨迹推送的同步。
3.多轨迹前端展示优化点总结
a.根据车辆数目切换展示方式,车辆少时用车辆图标,车辆多时用点。
b.重新设计车辆图标,以俯视图进行车辆图标设计,并通过后视镜等细节来更好的表现车头和车尾。
c.每次GPS重新获取后,地图不进行缩放,保持观察的连续性。并且通过车辆ID的关联,保证前端播放轨迹的连续不闪烁。
d.车辆车牌的显示,并且只有在地图缩放到一定级别后才显示,以避免图标杂乱。
e.通过计算播放点与最近GPS点的距离来展示该播放点的车速。
f.提供车辆详细信息展示的入口。
g.根据车辆不同的状态,比如超速、停留等用不同的车辆图标来进行表示。
4.项目真实效果展示
多轨迹展示效果:
单车辆历史轨迹展示效果:
-----欢迎转载,但保留版权,请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/
如果您觉得本文确实帮助了您,可以微信扫一扫,进行小额的打赏和鼓励,谢谢 ^_^