从零开始搭建属于自己的物联网平台
物联网平台应该具有的功能
- 数据采集:通过传感器、设备等采集各种数据,将其转化为数字信号,并将其发送到云端进行集中管理和处理。
- 数据存储:对采集到的数据进行存储,以便后续分析和处理。存储方式一般有关系型数据库、非关系型数据库、数据仓库等多种方式,根据具体场景选择不同的存储方式。
- 数据清洗和预处理:针对采集到的数据进行处理,去除无效数据、异常数据等,并进行数据归一化、数据转换等预处理操作。
- 数据分析和挖掘:基于采集到的数据进行分析和挖掘,提取出有价值的信息,从而对智能决策和预测产生重要的影响。
- 数据可视化和展示:将分析和挖掘的数据进行可视化和展示,以便用户快速了解数据的相关情况,从而进行更好的决策和管理。
针对这些功能进行设计
数据采集
物联网平台项目往往面临的是协议,消息多样化,针对这一特性,我们希望这个平台可以接入市面上常见的协议诸如MQTT、tcp、udp、CoAP、http等。针对消息体我们应该支持自由的解析方式,这里我打算采用自定义解析jar的方式,针对每一个新的设备,开发出不同的解析jar然后上传到服务器上,消息到来之后我们调用对应的jar来解析消息。
数据存储
针对物联网项目,一般数据分为两种,业务型数据和设备的上报数据,业务数据存入关系型数据库,设备数据存入时序数据库
数据清洗和预处理
数据清洗和预处理同样放在解析jar中,用来过滤一些异常数据等
数据分析和挖掘
这一点暂时先考虑把数据接上来,后续再考虑设计
数据可视化和展示
暂定用数据大屏的方式展示
整个平台技术架构
采用spring loud全家桶(使用若依微服务版,若依就挺好的这一块就不重复造轮子了),各个服务之间的调用摒弃掉feign调用的方式,针对物联网项目的特点,准备采用发布订阅模式,将各个业务转化为一个个不同的流或者说是时间,流的起点以及终点分别的设备消息的到来与入库,其他上层业务订阅这些不同的流来达成扩展。做到高内聚松耦合的方式。
一些特殊的点
时序库插入
像这种压力比较大的处理打算采用响应式背压来实现