分析JMX的RFID中间件设计
0 引 言
RFID(radio frequency identification)技术即无线射频识别技术,具有通讯速率高、抗干扰能力强、保密性好、远距离和高速移动物体识别等技术优势[1]。在实际应用中,RFID标签附着在待识别物体上,当标签进入阅读器的读取范围,阅读器能无接触地识别和读取标签中的信息,并将信息发送给上层应用软件,从而达到自动识别和收集相关信息的功能。RFID作为一种快速、实时、准确的非接触式信息采集与处理技术,是物联网系统的关键技术之一,被广泛应用于生产管理与控制、物流与供应链管理、交通管理和控制、医疗管理等领域[24]。
在RFID系统开发中,大多将RFID标签数据直接发送给应用程序,由应用程序对数据进行处理,只有少部分企业引入了RFID中间件,不过仍存在很多问题。第一,现有RFID设备的种类繁多,生产厂家不同,所使用的标准也不同。当RFID系统中的硬件设备、上层应用或数据库发生改变时,RFID系统的其他部分就必须重新进行部署或开发,不利于RFID系统的升级和维护。第二,RFID应用从阅读器获取的海量原始标签信息含有大量的冗余,并存在一定的错读和漏读现象,事件信息量低,不符合上层应用对业务的需求,如不经过过滤,容易造成网络传输负担,所以在数据上传上层客户应用之前要对RFID原始数据进行过滤、分析、汇聚等操作。第三,现有RFID中间件主要针对企业专属构建,有的主要负责屏蔽硬件,有的主要负责数据处理,移植能力和可扩展能力不够。为了解决以上问题,本文通过对RFID系统中间件的分析研究,采用Java管理扩展框架(java management extensions,JMX)和Web service技术,设计了一种可扩展度高、适应性强的分布式RFID中间件。
1 RFID中间件架构设计
RFID中间件是一种消息中间件,介于前端硬件设备和后端数据库与应用软件之间,是应用支撑软件的一个重要组成部分[5]。本文提出的基于JMX框架的分布式RFID中间件,主要由硬件管理模块、事件数据处理模块、应用服务模块和管理控制模块四部分组成,其中硬件管理模块和事件数据处理模块属于中间件的边缘代理。
RFID中间件系统,由硬件管理模块完成原始RFID数据的采集,匹配不同协议的阅读器驱动,将标签数据转换成统一的格式并进行缓存。然后由事件数据处理模块根据上层客户端制定的规则进行匹配处理,形成满足上层需求的事件信息。并由应用服务模块提供与上层交互的应用程序接口,实现数据交互和信息发布。其中,由管理控制模块完成对RFID阅读器和整个中间件的配置管理与监控,实现硬件管理模块、事件数据处理模块和应用服务模块的协调控制。中间件在RFID系统中的位置和结构如图1所示。
中间件在RFID系统中的位置和结构图JMX可以跨越操作系统、网络传输协议和系统体系架构,灵活地为系统、设备和应用程序提供管理功能[6]。RFID中间件系统中的各功能模块在JMX框架下都体现为MBean,根据需求由server在agent中进行注册管理。JMX agent利用各种适配器(adapter)和连接器(connector)对MBean进行管理,JMX agent可以带有任意多个适配器和连接器,并且容易进行部署和撤销,因此可以使用多种不同的方式访问agent,有效地提高中间件的可扩展能力。
在RFID中间件系统中,硬件管理模块与阅读器之间根据阅读器协议进行通信,硬件管理模块和事件数据处理模块内部和相互间的数据传输采用JMX的notification机制实现,应用服务模块、管理控制模块和边缘代理之间使用JMX的连接器进行连接,应用服务模块与上层客户端则通过Web service接口使用Http和JMS等传递XML数据。基于JMX的RFID中间件系统组成如图2所示。
2 系统各模块设计
2.1 硬件管理模块
本文设计的硬件管理模块主要包括阅读器代理和数据缓冲队列,以保证原始数据的正确采集和缓存。
RFID硬件设备的种类繁多,使用的通信协议也各有不同(包括TCP/IP、串口、USB等),阅读器代理起到底层协议适配作用,可根据不同的RFID阅读器接口协议,完成阅读器设备的驱动,建立网络连接,并将阅读器传来的标签数据转换成统一的编码形式。中间件通过阅读器代理完成其与阅读器之间的数据交换,并实现对RFID阅读器的状态监控和管理,有效地屏蔽了RFID底层设备之间的差异,实现应用层与设备层的透明传输。在JMX架构下,可方便地对阅读器代理MBean进行添加和删除,如有需要也可以添加传感器代理以适应客户需求。
阅读器代理接收的原始标签数据量十分巨大,事件数据处理模块的过滤器处理相对复杂,所以事件数据处理模块可能无法及时处理阅读器传来的标签数据。为了保证数据的实时处理需求,防止数据的溢出,为阅读器代理分配一个缓冲队列,将数据存入缓冲队列进行缓存。
2.2 事件数据处理模块
事件数据处理模块介于硬件管理模块和应用服务模块之间,是中间件的核心模块。它主要是根据客户定制的规则,对原始数据进行处理,将数据转换为上层客户端感兴趣的事件信息。事件数据处理模块包括数据校验单元、过滤器、规则接口和消息管理模块。事件数据处理模块结构如图3所示。 数据校验单元负责对缓冲队列中的原始标签数据进行有效性验证,丢弃有错误的标签数据,完成数据的初步过滤。规则接口则实现规则的新建、启动、暂停、删除与查看已有规则等操作,完成对事件规则的管理。消息管理模块主要负责事件生成的管理,将有关数据存入数据库并将生成的事件上传给应用服务模块。
图3 事件数据处理模块结构图
事件数据处理模块最主要的部分是过滤器。根据业务的需求,我们可以灵活地设置过滤器,通过不同过滤器的组合,满足上层应用的需求。本文设计的过滤器主要有以下4种:
1)冗余过滤器。标签数据冗余可分为时间重复和空间重复。时间重复即当RFID标签在阅读器读取范围内停留较长时间,阅读器便会反复读取并上报该标签数据。空间重复即标签出现在多个阅读器的重叠读取区域,多个阅读器同时上报该标签数据。
冗余过滤器首先将地理位置相邻的多个阅读器模拟为一个逻辑阅读器,并将逻辑阅读器范围内的所有阅读器数据映射到该逻辑阅读器。然后定义过滤器时间间隔T,当检测到有该逻辑阅读器的标签数据到来,查询标签记录是否已存在该标签。如存在且在时间间隔T之内,则认为是重复数据并进行过滤;如果存在且已超过时间间隔T,则认为是新标签并进行输出;如不存在该标签,则记录该标签并输出。
2)平滑过滤器。平滑过滤器主要是过滤那些误读的标签数据。通过定义时间阀值T和计数阀值N,只有在时间T内被读到N次的标签才算有效标签。平滑过滤可分为区分阅读器和不区分阅读器,区分阅读器需要每个阅读器达到规定要求,不区分阅读器只需要多个阅读器读到的次数并满足要求即可。
3)模式过滤器。可选过滤模式包括阅读器ID、阅读器类型、标签ID、生产厂家等,客户选择过滤模式,规定需要选择的标签或阅读器,每当读取到标签数据,将该标签与过滤模式相匹配,选择出符合客户需求的标签信息。
4)事件过滤器。将标签事件分为新出现 (new event)、离开 (left event)、当前存在(current event)和告警(alarm event)4种。new event表示这次出现而上次未出现的标签,left event表示上次出现而在一定时间内没有再次出现的标签,current event包括新出现的标签和上次出现且这次也出现的标签,alarm event即该区域不该出现的标签。
2.3 应用服务模块
本文设计的RFID中间件中,上层应用可通过Web service接口完成与中间件的信息交互,也可以通过查询服务实现数据库历史数据的查询。
为了实现上层应用对中间件跨平台、跨语言的访问和控制,应用服务模块向外提供Web service接口。Web service是一个应用组件,通过网络协议和规定的标准数据格式(Http,XML,Soap)为应用程序提供数据和服务。应用程序发送请求到Web service接口,RFID中间件解析该请求,并根据ECSpec中定义的数据采集、过滤和汇聚规则,进行阅读器数据处理,将处理后的数据生成报告(report)发送回应用程序。不同协议、系统、语言和平台的应用程序只要实现该Web service接口的调用,就可以通过RFID中间件对RFID设备进行访问和控制。
查询服务则是提供接口给某些应用程序直接查询标签历史数据。
2.4 管理控制模块
管理控制模块体现为系统管理界面,包括RFID阅读器和中间件的配置管理与监控。通过系统管理界面可对阅读器ID、名称、型号、生产厂商等进行配置,对硬件管理模块中阅读器代理、事件数据处理模块中过滤器等处理模块进行实时监控,并对各模块的连接关系进行配置和管理。当阅读器或者中间件某个模块出现异常时,中间件管理控制模块要及时产生报警,并完成相应的处理操作,减少错误数据。
3 结束语
根据RFID系统特点和RFID中间件功能需求,本文提出基于JMX的分布式RFID中间件架构,并从RFID中间件系统整体架构、各功能模块的软件设计和实现等方面介绍了其构建方法。该分布式RFID中间件实现了数据采集和应用的分离,通过阅读器代理方式,有效地屏蔽底层RFID硬件设备信息,并向外提供Web service接口,封装RFID中间件向外逻辑,实现屏蔽上层应用的功能。动态灵活的JMX架构,模块化的设计,阅读器代理、过滤器等功能模块可根据需求进行添加和裁剪,使RFID中间件拥有高度的伸缩性,方便系统集成和扩充。