本文提出了一种面向服务的物联网网关中间件的设计实现方式。在典型的物联网应用场景中,物联网应用中间件通过其感知元件管理功能对感知层各感知元件进行识别、建立应用路由并控制读写,接收感知层发送的数据并进行清洗和事件分析,向上层应用传递清洗和筛选后的数据或事件信息。可利用网关组件建立与感知元件间透明的、标准的对话模式。
1 物联网中间件应用模型设计
物联网应用中间件从下往上分为三层,分别为数据采集层、数据处理层以及上层应用接口层,其示意图如图1所示。
(1)数据采集层:为底层不同的数据采集设备提供适配、管理以及异构数据解析的功能。
(2)数据处理层:对数据采集层传回的物联网元数据进行处理并根据事先配置的业务规则,生成上层应用能直接使用业务事件数据,交由上层应用使用。其中数据队列管理组件对采集的数据提供缓存服务;数据过滤引擎通过元事件匹配规则对数据采集层传回的初始数据进行去冗余操作,并生成元事件队列;复杂事件处理组件通过查询业务规则,使用基于有限自动机和活动实例栈的方法来检测和处理复杂事件;业务规则配置组件提供灵活的业务配置管理机制,实现物联网应用中间件的可配置、可扩展性。
(3)上层应用接口层:为上层应用系统提供统一接口支持,如消息管理、事件管理、业务规则配置、应用管理等,屏蔽物联网应用中间件内部更改对外围应用的服务产生的耦合依赖。
物联网中间件的技术实现通过网关层组件将各种感知设备的数据采集并进行处理整合到网关,并经过网关进行数据封装并传递给上层应用,详见图2。
2 网关层组件设计
网关层组件是物联网应用中间件的关键组件,它既要将服务器端发来的数据发送至感知层交互,又要将感知层采集的数据传输至服务器端。网关层的运转机制数据传输至关重要。整个网关应用的设计都是以事件驱动进行设计的,事件驱动是整个数据采集和流转关键所在,同时,设备管理设计是实现终端设备统一化管理的关键,设备驱动程序提供设备的统一化接口和设备IP化的标准。网关层组件设计重点是运转引擎和设备管理驱动程序设计,如图3所示。
2.1 设备管理
设备管理是对计算机的I/O系统的管理,其主要功能为:
(1)选择和分配I/O设备进行数据传输操作;
(2)控制I/O设备与CPU(或内存)之间交换数据;
(3)为用户提供一个友好的接口,把用户和设备硬件特性分开,使得用户在编制应用程序时不必涉及具体设备,由系统按用户的要求来对设备的工作进行控制。
(4)提高设备与设备之间、CPU与设备之间以及进程与进程之间的并行操作程度,使操作系统获得最佳效率。
设备控制器是CPU与I/O设备之间的接口,它接收从CPU发来的命令并控制I/O设备工作。设备控制器是一个可编址设备,当它仅控制一个设备时,它只有一个惟一的设备地址;当它控制多个设备时,则应具有多个设备地址,使每一个地址对应一个设备。设备控制器由三部分组成,如图4所示。
网关设备管理主要是管理物联网网关内的所有设备,包括:网关设备、近程接入网络设备及感知设备。设备管理分为设备地址管理、设备属性管理和设备注册与注销管理。
2.2 接口管理
接口管理是通过设置I/O通道实现,设置I/O通道的目的是使一些原来由CPU处理的I/O任务转由通道来承担,从而把CPU从繁杂的I/O任务中解脱出来。
在设置了通道后,CPU只需向通道发送一条I/O指令。通道在收到该指令后,便从内存中取出本次要执行的通道程序,然后执行该通道程序。仅当通道完成了规定的I/O任务后,才向CPU发中断信号。
I/O控制方式分为程序I/O方式、中断驱动I/O控制方式和DMA控制方式。
网关层组件接口管理采用多通路I/O系统及中断驱动I/O控制的方式,从而使进程要启动某个I/O设备工作时能实现CPU与I/O设备并行操作。
2.3 逻辑处理引擎
逻辑处理引擎的主要功能是当一个设备事件触发后根据数据等因素触发其他设备的事件,逻辑引擎根据预先配置好的配置文件里的逻辑流程处理设备的相关逻辑。
逻辑流程可以根据业务配置,并把逻辑流程以JSON格式存入配置文件中。格式为:逻辑ID={逻辑判断条件,触发设备地址}。
物联网网关的逻辑处理主要针对该网关内的设备相关逻辑处理,网关间和复杂的逻辑处理都交由服务端应用层进行处理。物联网网关逻辑处理流程如图5所示。
2.4 运转引擎
运转引擎是物联网网关层组件运转的核心组件,整个应用中间件是以事件驱动为动力、运转引擎任务处理为核心的运转体系。运转引擎具有多线程并发处理、多任务调度处理、优先级处理、自动伸缩线程池和接口对接的特点。
运转引擎需要调度处理各个模块产生的任务,具体包括事件处理任务、数据处理任务、逻辑处理任务、数据传输任务、指令处理任务、配置管理任务等。
3 结语
物联网中间件网关设计是物联网系统工作运转的核心,物联网中间件网关层组件的设计是通过分析最下层感知设备(主要包括标签类设备、计量类传感器及开关状态量传感器等)的特点,充分发挥网关层组件的作用,通过设备管理的驱动程序、运转引擎、逻辑引擎、连接池、事件处理引擎等技术将底层设备统一化管理,使得当感知设备信息的数据库软件或后端发生变化情况发生时,应用端无需修改或只需做简单修改就能处理,节省多对多连接的维护复杂性问题。同时形成传感信息统一接入规范,解决物联网领域产品众多、标准不统一的问题。