海图监控项目node后台开发总结
海图监控项目node后台开发总结
项目背景:主要是一套基于雷达扫描源数据在客户端上进行展示和相关交互的系统。
最近祖传项目也快交接了。从17年4月到现在…
整套系统基本架构如下,
因为实验室人力不足的原因。后台也要前端写,所以直接nodejs上了。
根据需求,web后台需要有这几个功能:
1、读取rabitmq消息队列的数据(包括雷达扫描数据、硬件监控数据等等),让前端获取后进行运用
2、用户权限控制、用户地图上的相关交互需要入库、历史航迹、操作记录之类的,主要是数据库相关的操作
最开始的时候功能1的实现是打算node读取消息队列数据后在内存中维护一份坐标map,客户端定时轮训获取。但由于轮询效率太差的原因,最后决定使用websocket来实现。实操之后发现,消息队列的大量数据读取堵塞js主线程,导致http无法响应。于是最终采取多进程的方案。
功能1的实现:消息队列的读取和处理在子进程进行处理。在子进程中将需要推送的数据发到主进程进行推送,http的响应也是在主进程中。主进程的推送也进行了节流处理,将一批数据收集好之后推送到前端(一开始没进行节流处理时经常会把前端卡死掉)。为了方便,直接使用了sequelize。
功能2 权限认证使用基于jwt的方案。其它就是正常业务逻辑开发
最终就用到了express+mysql+websocket+jwt+amqp这些。把基础数据跑通了,后面都是业务逻辑体力开发了。。
从现在看来,这个项目还是有很多不足的地方:
1、日志不合理。只单纯记录console.log和err。没有更细纬度
2、代码写得有点乱
3、无任何容灾和进程维度的重启保护机制
部署
- Post title:海图监控项目node后台开发总结
- Post author:flytam
- Create time:2018-12-22 22:15:35
- Post link:https://blog.flytam.vip/海图监控项目node后台开发总结.html
- Copyright Notice:All articles in this blog are licensed under BY-NC-SA unless stating additionally.