CN102981817B - 基于Hadoop的RFID中间件构件库设计方法 - Google Patents
基于Hadoop的RFID中间件构件库设计方法 Download PDFInfo
- Publication number
- CN102981817B CN102981817B CN201210313781.0A CN201210313781A CN102981817B CN 102981817 B CN102981817 B CN 102981817B CN 201210313781 A CN201210313781 A CN 201210313781A CN 102981817 B CN102981817 B CN 102981817B
- Authority
- CN
- China
- Prior art keywords
- component
- rfid middleware
- datanode
- hadoop
- par
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种可动态扩展、管理调用方便的基于Hadoop的RFID中间件构件库设计方法,包括以下步骤:步骤1,根据EPCglobal规范划分RFID中间件的各个功能模块;步骤2,利用OSGi技术将各个功能模块构件化成为Bundle,同时采用OSGi技术中的DS方式将RFID中间件中的功能扩展的相关模块做成服务对外发布;步骤3,利用Virgo中的Par方法将组成同一功能的所有构件组织成为一个Par;步骤4,将获取到的所有Par通过Hadoop相应的HDFS API存储到不同的DataNode中,同时向Hadoop中的NameNode汇报各个DataNode的情况,使得NameNode通过管理DataNode来管理整个RFID中间件构件库。
Description
技术领域
本发明属于物联网领域,特别是属于RFID中间件技术领域。
背景技术
自2009年8月温总理提出“感知中国”以来,物联网被正式列为国家五大新兴战略性产业之一,引起了全社会极大的关注。通过对物联网技术的深层次了解我们会发现, RFID(Radio Frequency Identification,RFID)技术作为物联网的四大关键领域之一,它的发展好坏将直接影响着物联网技术的兴衰。
RFID技术是一种通信技术,可通过无线电讯号识别特定目标并读写相关数据。正是因为它的这个特点使得将现实中间的实物转变成为网络中对应的虚拟事物成为可能,从而实现在网络中实时监控现实中实物的状态的改变。而作为RFID的核心技术RFID中间件(如图1)是连接底层阅读器和上层应用的桥梁,通过它能够屏蔽底层阅读器类型的差异而向上层应用提供从阅读器获取的数据,同时上层应用程序利用RIFD中间件提供的接口向底层阅读器发送命令控制阅读器的相关读取状态,而不需要关心阅读器的类型差别。因此RFID中间件的功能的强弱、可扩充性能力的大小等系列指标将决定着RFID应用开发的难易和效率的高低。
目前已经有针对RFID中间件规范EPCglobal实现了各种不同版本的中间件,其中最具有长远决策的是基于OSGi规范进行开发的一种。因为OSGi是一种基于构件的开发思想,相对于面向对象的思想更适合企业级应用开发,它的动态可扩展性保证了已经实现的RFID中间件还可以继续进行功能扩展,从而实现各种不同情况的RFID应用开发;其可复用性保证了不“重复发明轮子”的原则,可以直接拿来即用。但是这种方式只关注了如何利用OSGi去实现RFID中间件构件,却没有想到当构件的数量达到一定程度后,在本地去管理庞大的构件库的难度。
通过对Hadoop的分布式计算和分布式存储两大块功能的了解,发现其对处理海量数据有着无法比拟的优势。而物联网作为新兴的科技在日后必然会得到更好的发展,那么一个能够满足多种物联网应用需求的RFID中间件是不可缺少的。所以为了能够使得已有的RFID中间件构件库在日后不断持续的扩展,同时能够为更多的RFID应用开发者提供已有功能构件,则之前的在本地基于OSGi开发构件并且直接将构件保存在本地的方式是不够明智的,我们需要利用Hadoop将RFID中间件构件库进行分布式存储和提取。
发明内容
本发明提供一种可动态扩展、管理调用方便的基于Hadoop的RFID中间件构件库设计方法。
为解决上述技术问题,本发明采用的技术方案是:提供一种基于Hadoop的RFID中间件构件库设计方法,包括以下步骤:
步骤1,根据EPCglobal规范划分RFID中间件的各个功能模块;
步骤2,利用OSGi技术将各个功能模块构件化成为Bundle,同时采用OSGi技术中的DS方式将RFID中间件中的功能扩展的相关模块做成服务对外发布;
步骤3,利用Virgo中的Par方法将组成同一功能的所有构件组织成为一个Par;
步骤4,将获取到的所有Par通过Hadoop相应的HDFS API存储到不同的DataNode中,同时向Hadoop中的NameNode汇报各个DataNode的情况,使得NameNode通过管理DataNode来管理整个RFID中间件构件库。
当开发者需要向所述RFID中间件构件库提交自己的RFID中间件时,先通过构件存储算法检测其在HDFS中是否存在,如果不存在,则保存在对应的DataNode中,从而实现RFID中间件构件库功能扩展;如果该构件已经存在,则拒绝该次的提交。
当开发者需要向所述RFID中间件构件库获取其中RFID中间件的依赖时,通过构件获取算法找到该构件所有的依赖,然后通过Hadoop中的MapReduce对所有依赖进行化简处理,生成最终的依赖表单,然后从HDFS中找到依赖表单中的所有构件返回给开发者。
与现有技术相比,本发明首先利用Virgo中的Par思想来将已有的RFID中间件构件库根据功能进行分类,生成相应的Par。然后通过Hadoop中的HDFS API将生成的Par保存到不同的DataNode中,然后汇报给NameNode进行管理。同时为了保证以后开发者能够顺利的获取和保存RFID中间件到HDFS中,我们针对获取和保存设计出两种不同的算法,隐式的供开发者调用。这样便能很好的实现对RFID中间件构件库的统一管理,同时其在Hadoop中具备的分布式特性能够为更多的RFID应用开发者提供便利,从而实现物联网技术的快速发展。
附图说明
图1是RFID中间件原理示意图;
图2是Hadoop集群图;
图3是HDFS存储RFID中间件构件流程图;
图4是HDFS获取RFID中间件构件流程图;
图5是整体RFID中间件在RFID应用中的架构;
图6是基于Hadoop的RFID应用开发架构示意图。
具体实施方式
下面结合附图和具体实施方式对本发明作进一步地详细说明。
通过图1我们可以观察到RFID中间件是连接底层阅读器和上层Web应用的桥梁,通过不断的向RFID中间件中添加其他附属功能如:WMS、ERP等,则能够逐步的扩展RFID中间件的功能,从而不断的壮大RFID应用的开发。在本文中选取EPCglobal作为RFID中间件规范,来细分出RFID中间件的各个功能模块。
一、基于OSGi的RFID中间件模块划分
根据EPCglobal规范,RFID中间件主要由ALE层和统一设备管理层两部分构成。统一设备管理层完全屏蔽掉底层阅读器的差异,向ALE层传递由各种不同阅读器读取标签所获得的信息;而ALE层则通过一系列的算法处理完统一设备管理层传来的数据,然后提交给上层应用。通过进一步细化两部分功能组成,最终形成如图5的基于OSGi的各个功能模块。
至于如何利用OSGi去实现RFID中间件各个功能模块,则需要对基于OSGi的构件开发有一定的了解。如今Eclipse都是基于OSGi进行开发的,所以Eclipse中也支持基于OSGi的构件开发。在这里想要说明的是一个构件所有的信息都会在MANIFEST.MF文件中体现出来。
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Pgl_rfid Plug-in
Bundle-SymbolicName: pgl_rfid
Bundle-Version: 1.0.0
Bundle-Vendor: SCUT EMOS
Bundle-RequiredExecutionEnvironment: J2SE-1.5
Export-Package: edu.scut.emos.rfid.core,
Bundle-ClassPath: bin/,
lib/comm-2.0.jar,
Import-Package: org.apache.log4j;version="1.2.15",
org.osgi.framework;version="1.4.0"
Require-Bundle: pgl_rfid;bundle-version="1.0.0",
org.springframework.jdbc;bundle-version="2.5.6"
通过如上的一个MANIFEST.MF文件,我们可以知道该构件的唯一标识名称、依赖的构件名称、依赖的包名称、导出的包名称。总之,这个文件包括了该构件与其他构件相互之间联系的整个信息,它对于接下来的工作具有非常重要的作用。
二、基于Virgo中Par的RFID构件范围划分
Virgo官方文档中对创建Par工程的好处进行了定义:Par是由多个构件组成;Par具有独立的名称、版本信息、描述信息;两个独立的Par之间具有明显界线,也就是单独的Par活动不会影响其他的Par;Par可以作为一个独立的单元。在本文中即是利用了Par的两个优点:一是能够封装多个构件,增大了以构件为单位的粒度;二是Par之间具有明显的界线,利用这个特点可以更方便的管理RFID中间件各个功能模块。
我们将整个RFID中间件划分成为六个Par,也就是六大功能模块,分别为:edu.scut.emos.rfid.ale.par、edu.scut.emos.rfid.conn.par、edu.scut.emos.rfid.mgr.par、edu.scut.emos.rfid.msg.par、edu.scut.emo.rfid.device.par、edu.scut.emos.rfid.util.par。为了直观的体现各个Par的功能,我们需要为每个Par定义一个清晰的名字,如edu.scut.emos.rfid.ale.par代表RFID中间件的ALE层功能模块,通过进一步了解该Par中的内容可以知道:里面含有ALE报告构件,ALE报告形成方式构件,ALE层配置文件构件等等。
关于如何将RFID中间件转化成为上面的六大Par。首先需要在Eclipse中安装开发Virgo应用的插件,该插件支持Par的开发;然后就是要对RFID中间件的整体框架有准确的把握,这样才能知道不同的构件需要放置在哪个Par中。
、将Par存放到Hadoop中
如图2所示Hadoop集群里面有一个NameNode节点充当主管节点,它管理着所有的DataNode节点的活动。当添加新的DataNode节点时需要向NameNode汇报登记,而删除一个已有的DataNode节点时则需要相应的更改NameNode中的相应信息。
在这步我需要做的是将以Par为单位的构件存储到对应的DataNode中。而每个DataNode的名称就是对应Par的名称,至于如何存储则需要参考Hadoop中HDFS 的API接口,然后通过封装HDFS已有的接口来创建存储对应Par的构件的方法。通过这一步我们能够达到的效果是:Hadoop中存在六个DataNode节点,每个节点的名称为对应的Par节点名称,而每个DataNode中都存储着Par所包含的RFID中间件。与此同时,六个DataNode节点都在NameNode中已进行登记。
这样我们就有了保存Par至HDFS中的方法,同时已有的RFID中间件构件库则保存到了Hadoop中。
、存储RFID构件至Hadoop中的方法
当遇到开发者需要向RFID中间件构件库中添加自己的构件时,需要有如图3所示的算法来进行验证:
1、 解析该构件的MANIFEST.MF文件,通过该构件的名字找到对应的ParName。构件的名字一般都是有Par的名字后面添加标示符组成,所以建立一套解析方式就能获取到构件对应的ParName;
2、 查找NameNode中是否有(1)中ParName对应的DataNode
2.1 如果有转至3;
2.2 如果没有转至5;
3、 查找DataNode中是否有与该构件相同的名字(BundleName)的构件;
3.1 如果有转至4;
3.2 如果没有转至6;
4、 查找具有相同BundleName的构件是否具有相同的版本信息;
4.1 如果有转至8;
4.2 如果没有转至6;
5、 在hadoop中新建一个DataNode节点,然后在DataNode节点中建立一个block,将该Bundle保存至block中,转至8;
6、 检测是否有block空间未用完;
6.1 如果有转至7;
6.2 如果没有转至5;
7、 保存该构件至block中,转至8;
8、 结束。
通过该算法可以保证,当开发者向RFID中间件构件库提交自己的构件时,不会出现重复的保存相同构件,同时能够有规则的将其提交的构件分类保存到不同的Par中,便于以后更加方便的去提取构件。
五、从Hadoop中获取RFID构件的方法
既然有开发者向RFID中间件构件库存储构件,同时也会有开发者需要从中获取他们构件所依赖的构件,这时我们需要利用图4所示的算法进行提取:
1、 解析该构件的MANIFEST.MF文件,找到所有依赖的构件(Bundles),转至2;
2、 检测Bundles是否为空;
2.1 如果是转至3;
2.2 如果不是,记录下所有的Bundles的名字,转至3;
3、 解析该构件的MANIFEST.MF文件,找到所有依赖的包(Packages),转至4;
4、 检测Packages是否为空 ;
4.1 如果不是转至5;
4.2 如果是转至6;
5、 获取到所有Packages所属的Bundle,记录下所有Bundles的名字,转至6;
6、 通过Hadoop中MapReduce计算,将得到的所有Bundles的名字去掉重复,得到一份每个构件只含一个名字的文件,转至7;
7、 通过HDFS找到所6中文件对应的所有构件(Bundle)返回给开发者,转至8;
8、 结束。
在该步骤中最重要的是如何利用Hadoop中MapReduce,从开发者提供构件的MANIFEST.MF文件中以最快的速度查找出所有依赖的的构件,从而以最快的速度响应开发者的需求。这在大量用户请求的情况下,非常具有实用性。
六、最终实现
通过将上述的算法实现完成,在前端开发者对部署好的Hadoop进行操作时,自动去调用我们的方法,就能够实现对整个Hadoop中RFID中间件构件库的控制。最终达到如图6所示的效果。
以上所述仅为本发明的一个实例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (2)
1.一种基于Hadoop的RFID中间件构件库设计方法,其特征是,包括以下步骤:
步骤1,根据EPCglobal规范划分RFID中间件的各个功能模块;
步骤2,利用OSGi技术将各个功能模块构件化成为Bundle,同时采用OSGi技术中的DS方式将RFID中间件中的功能扩展的相关模块做成服务对外发布;
步骤3,利用Virgo中的Par方法将组成同一功能的所有构件组织成为一个Par;
步骤4,将获取到的所有Par通过Hadoop相应的HDFS API存储到不同的DataNode中,同时向Hadoop中的NameNode汇报各个DataNode的情况,使得NameNode通过管理DataNode来管理整个RFID中间件构件库;
当开发者需要向所述RFID中间件构件库提交自己的RFID中间件时,先通过构件存储算法检测其在HDFS中是否存在,如果不存在,则保存在对应的DataNode中,从而实现RFID中间件构件库功能扩展;如果该构件已经存在,则拒绝该次的提交;
其中构建存储算法具体为:
(1)解析该构件的MANIFEST.MF文件,通过该构件的名字找到对应的ParName;
(2)查找NameNode中是否有(1)中ParName对应的DataNode;
(2.1) 如果有转至(3);
(2.2) 如果没有转至(5);
(3)查找DataNode中是否有与该构件相同的名字BundleName的构件;
(3.1) 如果有转至(4);
(3.2) 如果没有转至(6);
(4)查找具有相同BundleName的构件是否具有相同的版本信息;
(4.1)如果有转至(8);
(4.2) 如果没有转至(6);
(5)在hadoop中新建一个DataNode节点,然后在DataNode节点中建立一个block,将该Bundle保存至block中,转至(8);
(6)检测是否有block空间未用完;
(6.1)如果有转至(7);
(6.2)如果没有转至(5);
(7)保存该构件至block中,转至(8);
(8)结束。
2.根据权利要求1所述的RFID中间件构件库设计方法,其特征是,当开发者需要向所述RFID中间件构件库获取其中RFID中间件的依赖时,通过构件获取算法找到该构件所有的依赖,然后通过Hadoop中的MapReduce对所有依赖进行化简处理,生成最终的依赖表单,然后从HDFS中找到依赖表单中的所有构件返回给开发者。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210313781.0A CN102981817B (zh) | 2012-08-29 | 2012-08-29 | 基于Hadoop的RFID中间件构件库设计方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210313781.0A CN102981817B (zh) | 2012-08-29 | 2012-08-29 | 基于Hadoop的RFID中间件构件库设计方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102981817A CN102981817A (zh) | 2013-03-20 |
CN102981817B true CN102981817B (zh) | 2015-07-29 |
Family
ID=47855884
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210313781.0A Active CN102981817B (zh) | 2012-08-29 | 2012-08-29 | 基于Hadoop的RFID中间件构件库设计方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102981817B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104866605A (zh) * | 2015-06-03 | 2015-08-26 | 江苏马上游科技股份有限公司 | 一种基于MapReduce框架的物联网系统 |
CN113065620A (zh) * | 2021-03-18 | 2021-07-02 | 浩群信息科技(海南)有限公司 | 一种基于物联网的医疗废物管理系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102385516A (zh) * | 2011-10-31 | 2012-03-21 | 华南理工大学 | 一种基于云端服务器的可重构rfid中间件设计方法 |
CN102411500A (zh) * | 2011-08-12 | 2012-04-11 | 华南理工大学 | 基于OSGi分层的RFID应用集成构件库集成系统 |
-
2012
- 2012-08-29 CN CN201210313781.0A patent/CN102981817B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102411500A (zh) * | 2011-08-12 | 2012-04-11 | 华南理工大学 | 基于OSGi分层的RFID应用集成构件库集成系统 |
CN102385516A (zh) * | 2011-10-31 | 2012-03-21 | 华南理工大学 | 一种基于云端服务器的可重构rfid中间件设计方法 |
Non-Patent Citations (1)
Title |
---|
RFID中间件应用集成平台的研究与实现;申维;《中国优秀硕士学位论文全文数据库》;20111215;第2.2节,第3.1节 * |
Also Published As
Publication number | Publication date |
---|---|
CN102981817A (zh) | 2013-03-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106980669B (zh) | 一种数据的存储、获取方法及装置 | |
Das et al. | Big data analytics: A framework for unstructured data analysis | |
Khan et al. | Cloud based big data analytics for smart future cities | |
CN102915347B (zh) | 一种分布式数据流聚类方法及系统 | |
CN106407303A (zh) | 数据存储、查询方法及装置 | |
CN102999537A (zh) | 一种数据迁移系统和方法 | |
CN104144215B (zh) | 一种物联网泛在设备资源模型的构建方法 | |
Sun | [Retracted] Research on the Construction of Smart Tourism System Based on Wireless Sensor Network | |
CN103853714A (zh) | 一种数据处理方法和装置 | |
CN110019842A (zh) | 一种建立知识图谱的方法及装置 | |
Lourens et al. | Database management difficulties in the internet of things | |
Copie et al. | Benchmarking cloud databases for the requirements of the internet of things | |
CN103390018A (zh) | 一种基于SDD的Web服务数据建模与搜索方法 | |
CN104657435A (zh) | 一种应用数据的存储管理方法和网络管理系统 | |
Taherkordi et al. | Context-driven and real-time provisioning of data-centric IoT services in the cloud | |
CN102999329B (zh) | 基于可扩展标记语言映射配置的活动目录接口开发方法 | |
CN102981817B (zh) | 基于Hadoop的RFID中间件构件库设计方法 | |
Großmann et al. | SensIoT: an extensible and general Internet of Things monitoring framework | |
CN104636265A (zh) | 一种cimxml文档的高效内存模型组织的访问方法 | |
US10970316B1 (en) | Maintaining a class hierarchy of an object-oriented data model using shared columns and/or overflow tables | |
Antunes et al. | Semantic-based publish/subscribe for M2M | |
CN103259746B (zh) | 业务管理调度器层级的动态重排 | |
US8566814B2 (en) | Transporting object packets in a nested system landscape | |
CN104572649B (zh) | 分布式存储系统的数据的处理方法、装置及系统 | |
CN105354310A (zh) | 基于MapReduce的地图瓦片存储布局优化方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |