点击空白处退出提示
作品详情
物联网设备在线监测系统是我司按照客户需求开发的一套设备管理系统。 该系统实现了对客户指定的物联网监测设备的全生命周期管理。用户可以通过该系统在地图(支持离线和内网)上查看设备所在的地理位置、远程管理设备、监测设备运行状况、查看设备实时数据等。 设备会不断产生监测数据并上报至系统。而系统也会对每一组上传的数据进行分析、转换、生成相关图表并在监测到异常数据时进行告警。为了进一步提升设备采集数据的价值,我们按照客户要求,针对性地使用了傅里叶变换、核密度估计等多种算法供客户进行二次分析。
以下是更为具体的模块情况:
1. 设备管理模块。主要包含设备的基本信息、设备远程操作、设备在地理位置、实时状态等功能。该模块主要管理整个设备的基本信息,使得使用者能够清晰明了的查看设备基本信息和状态。
2. 实时处理模块。用户的系统会源源不断的通过一个消息队列向系统上传多个维度的数据。每日每台设备可达GB级别。这个模块主要负责数据的实时处理,流式处理。所有进入系统的数据,都会经过多轮处理。系统首先会分析数据的常规信息,如均值、方差、峰度、偏度等。其次会进一步的进行一定的转换和进一步分析,如使用傅里叶变换、核密度分析、网格密度分析等方法进一步分析数据,最后会将有需要转换成图片的数据生成图片保存在服务器上,以便后续的分析和查看。在实时处理的过程中,如果分析发现数据存在异常,系统还会发出告警信息,提示用户关注设备监测到的异常情况。
3. 数据分析模块。设备源源不断的上传到系统之中,且会被自动的分析一轮。但是在此之上,客户还需要对数据进行进一步的分析处理。如查看历史数据、查看数据转变情况、查看数据趋势甚至是手工操作和过滤数据。整个数据分析模块分为静态分析和动态分析。静态分析可以快速查看历史数据,并查看数据存储的基本信息、趋势等。动态分析可以针对一部分的数据,进行过滤,拆分,或者选择多组数据进行对比。
4. 数据存储管理模块。由于整个系统上传的数据量是巨大的,而客户又需要对整个系统的数据保存至少三年以上。因此我们专门开发了数据管理模块。该模块通过文件系统和数据库相结合的模式,并加以周期性的检查过期数据,配合对各种数据管理模式的设置,能够根据实际情况选择存储哪些数据、数据存储多久。并且对于系统中的数据,能够实现秒级查看。
使用技术:
1. 地图方面使用了openlayers来管理地图和地图事件。
2. 图表方面针对echarts做了一定程度的改进,并以此来满足客户对图表的进一步的需求。改进后的图表,操作性更强一些。
3. 后台服务主要是以Java和Python为主,数据库使用的是MySQL。流式数据的接收使用了rabbitmq。服务器从rabbitmq接收数据,然后运行解析模块,解析模块分为Java本地的解析和Python的远程解析。本地解析使用了Java库来计算一些基本的数据。但仅仅是这样还不够,我们又基于python的科学算法库matplotlib和FastAPI构建了一个算法服务器。在解析数据的过程中,Java会通过远程调用的方式,调用Python服务程序,从而实现更复杂的算法分析。
难点攻克:
1. 海量数据存储。系统预计能够存储的数据级别在TB级别。对数据有查询但是无搜索的要求。因此我们采用了数据库+文件存储的方式来实现。将大量的二进制文件按照一定规则组织排布并存储在磁盘上,在数据库中同时记录文件索引。除此之外会有程序周期性的根据策略来处理这些文件。
2. 离线地图。由于客户需要在内网中部署整个系统。因此地图功能稍微复杂一些。通常用的地图都是互联网的公用地图,必须要联网才能使用。因此在内网中部署地图较为困难。通过深入研究,我们找到了解决方案。通过使用一些开源地图的部分数据(即局部的地图数据),我们构建了一个地图服务器,并以此作为地图,实现了内网的在线地图。
3. 数据分析及其算法。由于客户对采集来的数据有更近一步的需求。因此我们按照客户的要求,用客户指定的算法来分析数据。在此过程中,我们尝试了多种方案,包括前端处理、后端处理等。最后选择利用Python在数据分析方面的优势,使用Python建立一个算法分析服务器,并对外提供算法服务。从而实现了客户要求的傅里叶变换、核密度、网格密度估计等多种算法。
4. 图表的定制。我们使用了开源的echarts作为定制的图表。但是仅使用该图表还不够,客户要求我们能够对图表进行更进一步的定制。因此我们对echarts进行了解剖和深入了解,并在它的基础上进一步的做了定制服务,圆满的完成了客户所需要的功能。
声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态
评论