射频辨认(RFID) 中间件坐落RFID阅读器与上层服务器使用层之间,具有屏蔽底层设备、标签数据清洗、数据交互等功用。现在,国内外许多企业以及组织也都致力于RFID 中间件的研讨,如:IBM、Microsoft、清华同方等都有自己的RFID 中间件产品。 这些产品大多布置在服务器端,假如短时刻内产生了海量RFID 数据,很多原始数据都将会集在服务器端,对中间件的数据处理才干是很大的检测。一同,海量数据的传输会占用网络带宽,假如网络呈现毛病,有或许会形成数据的丢掉。跟着大数据年代的到来,传统RFID 中间件的瓶颈逐步露出,直接影响体系的全体功用。因而,在面临海量RFID原始数据的情况下,怎么减小服务器端处理压力,下降体系对网络的依靠性成为 RFID 中间件急需处理的问题。本文就一种依据 NFC手机的RFID中间件进行研讨与完成,将RFID 中间件技能与移动互联网相结合,弥补了传统RFID 中间件的缺乏之处,而且契合当时发展趋势。
1 中间件规划方案
1.1 体系架构
依据RFID 中间件功用需求以及移动设备资源有限等特色,提出了如图1 所示的体系架构。
图1 体系整体架构图
1) 设备办理模块首要包括 4 个部分,NFC读卡部分担任调用手机自带 NFC模块进行读取标签信息;外接阅读器办理部分兼容外接阅读器驱动,并经过蓝牙、WiFi、3G网络等与之进行数据交互;作业日志办理部分首要对手机及中间件的作业日志进行办理;手机状况查询部分能够实时地对手机电量、剩下存储空间、信号等状况进行查询。
2)数据处理模块首要包括5 个部分,协议校验部分担任对RFID 标签数据依据标识位进行开始校验,去除残损的或许非本体系数据;标签缓存部分选用BlockingQueue 行列作为缓存将开始校验后的数据存储;冗余数据处理部分选用自适应的接近排序算法(Sorted Neighborhood Method,SNM)去除冗余数据;数据校验部分选用 CRC16 算法对标签数据中的校验源数据进行校验,以此验证标签数据是否被篡改正;数据分类部分依据约好的数据规矩将数据进行分类。
3)数据库模块选用 SQLite 嵌入式数据库存储处理好的数据。
4)数据交互模块选用Quartz结构结合Socket编程完成中间件与服务器之间的数据交互。
5)使命办理模块担任将服务器端发送来的指令文件进行缓存与办理。
1.2 体系规划要点
1.2.1 设备办理模块
该模块首要为对硬件设备的办理与监控,集成NFC以及外接读卡器驱动,而且能够对体系作业日志以及手机状况进行查询。
体系首要选用 NFC模块对RFID 卡片进行读写,集成多种NFC规范,可主动判别卡片类型,相关代码如下所示:
mTechLists =new String[][]{new String[]{MifareClassic.class.getName()},
new String[]{MifareUltralight.class.getName()},
new String[]{NdefFormatable.class.getName()},
new String[]{Ndef.class.getName()},
new String[]{IsoDep.class.getName()},
new String[]{NfcV.class.getName()},
new String[]{NfcF.class.getName()},
new String[]{NfcB.class.getName()},
new String[]{NfcA.class.getName()}};
为了使体系有杰出的可扩展性,中间件兼容多种读卡器驱动,经过蓝牙、WiFi、3G 网络等与外接读卡器进行数据传输。
此外,供给杰出的接口,可对中间件作业日志以及手机电量、信号强度、剩下存储空间等信息进行实时查询与办理。
1.2.2 数据处理模块
1)数据缓存、校验及冗余数据处理。
体系选用BlockingQueue 行列作为缓存来存储短时刻内接纳的很多数据。 将接纳的卡片数据进行开始校验,去除残损或许非本体系数据。
表 1 为标签数据格局,其间UID 为每个标签仅有标识,校验数据中前7 位是用于生成校验码的原始数据,第8 位为本体系标签标识,且对每个标签的前7位校验数据选用 CRC16 算法生成校验码,与标签UID 一同由服务器经过JSON 文件写入到手机端数据库中。 当读取到标签数据后,中间件首要依据校验源数据中第8 位标识符来判别该卡片是否为本体系所属,然后选用相同的 CRC16 算法对前7 位校验数据生成校验码,并依据标签 UID 与数据库中的校验码相比较,以此来判别标签数据是否被改写。 8 位校验源数据在校验完成后需去掉,只将有用数据存储。
表1 RFID 标签数据格局
数据冗余是RFID 体系不可防止的问题,假如数据不清洗,很多有用、无用的数据会占用网络带宽,添加体系处理担负;假如将接纳的数据逐个与数据库中的数据进行比对,尽管准确率高,可是面临很多的RFID数据时会下降体系功率,因而,针对移动端有限的资源以及对数据处理功率的归纳考虑,本体系选用SNM 算法来处理冗余数据。
数据清洗流程如图2 所示。
图2 数据清洗流程图
2)数据分类。
将经过清洗的数据依据事前约好好的数据规矩进行分类,比方事前规矩卡片中第 Ni ~Nj 位为数据标识位,则将数据存储到 SQLite 数据库相应表格中。
1.2.3 数据交互模块
该模块担任移动端中间件与服务器之间的数据交互,在保证数据完好性、安全性的前提下,进步传输速度。 选用Socket 通讯,以文件的方法传输指令与数据,模块中选用 CRC 校验保证文件安全,而且支撑文件断点上传、下载。 将相关文件在移动端进行存储与备份,即便网络呈现毛病,中间件也能够正常作业,且不会形成数据丢掉。
数据交互流程如图3 所示。
图3 数据交互模块流程图
中间件选用Quartz开源结构依据需求设置作业调度,在必定时刻主意向服务器发送一次恳求,若服务器端有新的指令,则获取该指令,解析并履行,无需人工干预,且参数可由服务器端下发指令进行修正,主动化程度高,可装备性好,服务器端选用多线程处理中间件的恳求,从而进步处理功率。
表2 数据交互模块传输速度测验
表 2 为对数据交互模块传输速度的测验成果,其间测验数据为支撑ISO15693 规范的RFID标签数据,手机端经过3G 网络向服务器端上传RFID 标签数据文件,支撑文件断点续传,而且当文件传输完成后,还会在本地进行备份,防止文件数据丢掉。 因为手机端缓存有限,且经过测验,发送的数据包假如过大会导致数据丢掉,所以体系数据包巨细设置为 1kB,且每发送一次数据包,都会加上报头用以标识该手机以及报尾用作 CRC 校验。 当数据量较小时,传输速度受报头、报尾的影响较大,而当数据量增大时,报头、报尾对数据传输速度的影响越来越少。 所以,当传输的数据量增大到必定程度时(100000 条数据左右),所耗费的时刻根本上与数据量巨细成正比,此外,数据传输速度受网络要素以及设备读写速度影响较大。
1.2.4 使命办理模块
将指令文件解析后顺次履行,假如指令履行成功,则将指令文件移到备份文件夹中;假如因为网络原因形成指令履行失利,则将该指令加入到使命行列,待网络康复后履行该指令,指令所需数据暂存在本地数据库中。
如以下JSON 指令所示,status 表明指令状况,即服务器端指令是否正常;order_type 表明指令类型,比方获取数据、修正参数等;details 中表明要进行的具体操作,其间的object 表明操作的目标;action 表明对该目标履行的操作,比方获取某一类型的数据、获取日志文件、获取设备状况或许是修正恳求上传/下载时刻距离等程序参数,使得该中间件可装备性好。
1.2.5 数据存储模块
中间件依据服务器端发送来的指令,将相关数据生成JSON 文件,发送到服务器端的一同,将JSON格局的数据文件备份到本地存储设备中,防止因为网络问题等原因形成的服务器端接纳的数据不完好,只要服务器端收到完好数据,而且发送相关指令给中间件,中间件才干依据指令将相关数据文件删去,以此节约移动设备的存储空间。
1.3 体系长处
1)减轻服务器端担负。
RFID原始数据经由多个布置在移动设备上的中间件进行处理,将处理后的有用数据发送到服务器端,这样既削减服务器端的压力,又削减网络传输量,进步了体系运转功率。
2)具有数据存储及备份功用,独立性强。
移动设备的存储功用越来越强,当网络或许服务器端呈现毛病时,可将RFID数据存储在移动设备中,有用防止数据丢掉。 因而在断网的情况下也能够正常作业,处理了以往RFID中间件技能对网络的依靠。
3)操作灵敏,布置简略。
NFC手机集读卡器、中间件于一体,能够依据数据量的巨细增减设备数量,也可依据卡片散布对中间件方位做出调整,便利布置,一同也处理了以往RFID体系中读卡器与中间件之间信息安全及传输速率问题。
4)体系可装备性高。
中间件与服务器端经过传输JSON指令来控制体系进行相关操作或许更改体系参数,比方获取指定数据、改动数据交互时刻距离等。 一同,操作人员也能够经过体系界面临中间件参数进行设置,处理了以往中间件主动化低、可装备性差等缺陷。
5)主动报警机制。
体系定时对设备日志及状况信息进行自检,若呈现紧急状况,比方设备电量缺乏、存储空间过满以及卡片信息被篡改等,能够及时地向指定的手机号码发送预警信息,防止形成丢失,弥补了以往中间件报警不及时的坏处。
2 体系完成及运转作用
体系选用 Java 言语依据 Eclipse 渠道编写,数据库为 SQLite 嵌入式数据库,测验设备为魅族 MX3 智能手机,其 RAM 容量为 2 GB,CPU 频率为 1638MHz,ROM 为 32 GB,测验用卡片遵从 ISO15693 规范,选用NFC模块读取卡片内容,部分运转界面如图4 所示。
图4 体系运转部分界面
当程序运转时,将手机衔接电脑,在 Eclipse 中发动 Dalvik 调试监控服务器 (Dalvik Debug MonitorService,DDMS),并经过 DDMS 自带的 Heap 来检查体系耗费内存,显现该程序所占内存为 22.628 M,CPU 占用率为6%,由此可见,该体系可在移动设备有限的资源中完美运转。 而且经测验,包括 1000 W条RFID数据的 SQLite 数据库巨细为188 M,从所占存储空间来看,该RFID 中间件可布置于大部分干流移动设备中,而且可有用处理并存储更多的数据。
为了模仿处理很多RFID 数据下体系作业状况,编写程序依据RFID数据规矩主动生成测验数据,不同数据量的体系功用测验成果如表3 所示。
表3 中间件部分功用测验
表3 中T 表明将原始数据经过清洗而且存入数据库所需时刻,R和P别离表明数据清洗的召回率和正确率,R=体系正确辨认的重复记录数/数据会集实践包括的重复记录数,P=体系正确辨认的重复记录数/体系一共检索到的重复记录数,Size表明保存相应数据量数据库的巨细。
能够看出,体系能够满意根本的数据处理要求,但数据清洗的召回率、正确率及所耗时刻还有待进步,剖析其原因首要是滑动窗口的巨细以及排序关键字的挑选。 当窗口太小时,简单漏配,即去除冗余作用欠安,导致召回率不抱负;当窗口太大时,会产生许多没必要的比较,时刻作用不抱负。所以,选用自适应随机窗口在二者间找到一个平衡点。 本体系选取的关键字是时刻戳,而依据实践使用,新抵达的RFID数据更能代表当时状况,所以每次比较都保存最新时刻戳数据,这样,使得部分数据之间的时刻阈值或许小于预设值,即有的数据被误认为是重复数据,导致了准确率不是很抱负。
3 结束语
本文提出了依据NFC手机的RFID中间件,因为NFC手机集读卡器与中间件功用于一体,且有较好的存储才干,即便在网络呈现毛病时中间件依然能够运转,一同也使得体系布置更为灵敏;数据交互模块选用Quartz结构与Socket编程相结合,主动化程度高;经过JSON指令或许杰出的界面临参数进行设置,使得体系具有杰出的可装备性;在体系产生反常时还可实时宣布报警短信,以便及时处理;充分利用移动互联网的优势,将RFID 中间件与移动渠道完美结合,处理了传统中间件的诸多不便之处。