在系统大规模应用的场景下,黑龙江省每个棚室蔬菜作为一个技术支持单元(面积约为1/15公顷),按照20%的服务安装覆盖率,大约需要18万个计算节点。棚室物联网产生海量实时的流式视频文件和传感器数据,可能存在大量在线机器学习和实时判断的应用场景,仅靠传统关系型数据库难以处理
[8,9]。大规模的视频流监测分析和海量物联网数据实时处理需要大数据技术作为支撑,在对Hadoop、Spark和Storm等分布式处理架构进行比较分析后,发现Storm的高效实时计算能力符合海量实时数据计算的应用场景要求,Storm的水平扩展和自动容错能力为服务的规模扩展和稳定运行提供了保障。基础设施层围绕Storm框架构建,主要由数据接入模块、数据缓存模块和Storm集群组成。数据接入模块负责快速获取物联网数据并接入到数据处理集群,本系统采用开源的分布式海量日志采集聚合传输系统Apache Flume实现各种实时感知数据的快速接入。在视频数据处理方面,由于棚室监测的大部分时间图像都不会发生显著变化,全程存储将造成大量空间浪费,因此通过视频处理库把摄像头的视频流转换为帧进行抽样存储,将帧数据以JSON的格式传递给Kafka Broker(一种高吞吐量分布式发布订阅消息系统),供流数据缓冲组件和存储使用。数据缓存主要是提高海量数据的负载能力,避免因大量数据引起宕机,系统采用Kafka数据缓存模块保证消息的持久性和稳定性,每秒可处理数百万条数据。Storm集群负责实时海量数据处理,由1个Nimbus(主节点)和若干个Supervisor(计算节点)组成,应用Storm-Kafka插件可以持续不断地从缓存模块中读取数据,实时运算后分类存储。物联网数据进入MySQL数据库,视频数据经过截取处理后进入分布式数据库Hbase,如
图2所示。服务系统充分利用Storm集群进行高速运算及存储,对外通过Apache Tomcat服务器提供统一标准的计算及存储服务,后台的Storm可以全自动按需弹性提供服务资源,按照系统的推广建设进度动态扩充,实现资源的集约化应用和服务效益最大化。