现在有一个业务需求,有很多GPS实时的数据通过MQ传递过来(上万台机器的GPS数据),我需要将他们显示到页面的地图上。
本人菜鸟,希望有过类似项目经验的能给我提供一个比较好的解决方案。
我想过的解决方案:
- 页面通过websocket直接对MQ进行筛选,将地图显示范围上的GSP散上页面。
问题:数据过大,效率不够高,页面压力大。 - java服务端将MQ获取的数据缓存在一个map里面,页面通过地图显示范围请求map里面对应的数据。
问题:map的读写会引发线程冲突,如果加锁,效率会慢很多。 - java服务端将MQ获取的数据直接存入数据库,然后存入缓存,页面通过地图显示范围请求缓存数据,设置缓存的刷新频率。
问题:不能够实时现实,得根据缓存的更新频率。
因为本项目没有好的架构师,需要本菜鸟自己解决这个问题,希望大家能帮帮我。
后端过滤数据,保证一次性的数据不多。
前端用 Websocket 获取数据并更新。
这个不是前端就能解决的问题,得让后端一起配合。
要实时就先存到 redis 这类内存数据库里,一段时间后统一写入。