单士华 李展
(郑州黄河科技学院,河南 郑州4500063)
物联网云服务的设计与实现
单士华 李展
(郑州黄河科技学院,河南 郑州4500063)
在当前的数据信息时代,全球以电子方式存储的数据总量正在飞速的增长,2011年全球数据量已经超过1.8ZB。海量数据的存储与快速分析也因此对传统的计算机形成一个严峻的挑战。云计算的快速、高效等特点成为它处理海量数据的优势。
物联网;云计算;大数据
采用云计算来分析处理物联网数据,把物体本身的信息通过传感器、智能设备等采集后,收集至一个云计算平台进行存储和分析,即是一种良好的解决方案,亦即物联网云服务。
本文以气象数据为例,实现一种物联网云服务。该设计能够应对气象数据的海量特点,进行高效存取,数据不易丢失,并且以云计算平台为基础对海量数据进行快速的分析计算,处理成有意义的数据。同时,该设计提供云服务接口,方便服务的消费者进行使用。
本系统主要包含两大功能应用:气象数据检索和气象数据统计。在体系结构上采用SOA架构思想,基于SOA的体系架构主要的优势是便于管理不断增长的大规模信息系统,通过利用基于互联网的服务降低企业间协作的成本[2]。本文将两个服务划分到不同的集群中去,在通过远程调用的方式去访问对应的服务。服务划分之后,对相应的服务采用水平伸缩的方式进行扩展,以此来增强每个服务的处理性能,加快后台计算到前台交互的响应速度。系统架构如图1。
图1
由于气象统计服务涉及的计算量较大,将巨量气象数据调用云计算服务进行处理;而气象检索服务只是单一的数据查询,不涉及统计计算相关的需求,所以直接通过存储层API进行存取操作。
在气象云服务平台中,服务的访问主要是通过远程调用的方式来实现的。常用的技术手段包括RMI、WebService和OSGI的RemoteService等服务。
3.1 技术选型
3.1.1 RMI技术
RMI允许Java对象存在于多个不同的地址空间,分布在不同的Java虚拟机上。每一个地址空间可以在同一台主机上或者网络上不同的计算机上。使得Java对象能够在不同的JVM之间传递。
3.1.2 WebService技术
WebService是一种跨语言平台的系统间交互标准。在这个标准中,对外提供功能的一方以HTTP的方式提供服务,该服务采用WSDL(WebServcieDescriptionLanguage)描述,在这个文件中描述服务所使用的协议,所期望的参数,返回的参数格式等。
3.1.3 OSGIRemoteService
OSGI技术是面向Java的动态模型系统,其本质是将Java面向对象的开发方法转向面向组件和服务的开发上去,在服务的处理上使用了生产者消费者模式,通过服务注册表(Service Registry)来管理服务。其优点在于实现类似于硬件的热插拔功能,在无需重启系统的情况下,来完成新功能的扩展和已有功能的移除。
OSGIRemoteService体系结构如图2。
图2
综合比较三种实现方式,RMI和OSGI技术虽然只适用与Java领域,但是服务的响应速度要高于WebService;而使用Web-Service的主要优势在于它的跨平台处理能力。在评估系统应用时,本文同时还考虑了另外一种潜在需求:虽然目前系统的功能比较简单,然而随着需求复杂度的增加,以后逐渐引入的功能会越来越丰富,需要各个模块之间的解耦和度越来越高,否则在系统重构方面会存在很多棘手的问题。而这也是本文采用OSGI RemoteService的主要原因之一。
在对大量气象数据统计服务的云计算处理上,主要使用Hadoop的MapReduce框架来实现。
4.1 MapReduce框架
MapReduce是最早由google提出的并行编程模型,通过采用并行计算的方式来处理海量数据。其核心的操作主要包含两个,Map(映射)和Reduce(化简)。简单地说,MapReduce就是“任务的分解与结果的汇总”。Map把任务分解成多个任务,Reduce把分解后多任务处理的结果汇总起来,得到最终结果。适合用MapReduce处理的任务有一个基本要求:待处理的数据集可以分解成许多小的数据集,而且每一个小数据集都可以完全并行地进行处理[3]。图3为MapReduce的运行机制。
图3
图示说明:
4.1.1 将数据源所存储的数据记录进行切割,划分成多个split,然后启动云端服务;
4.1.2 MapReduce程序是基于master/slaves的方式来进行部署的,在云端机器中会有一台机器充当master角色,它的职责包括:调度任务分配给slaves,监听每一个任务的执行情况;
4.1.3 在图形中,每一个slave体现为一个worker,当worker接到Map任务时,会去读取气象数据片段,从中解析出key/value键值对,并作为参数传递到定义好的Map函数之中,Map函数同样会输出一些key/value键值对,并将这些键值对缓存在内存里;
4.1.4 缓存之后,程序定期将缓存数据写入本地硬盘(图中的localwrite操作),并把存储地址传回给master,以便master记录他们的位置用以执行Reduce操作;
4.1.5 当worker被通知执行Reduce操作时,master会把相应的Map输出数据所存储的地址也发送给该worker,以便其通过远程调用来获取这些数据。得到这些数据之后,reduceworker会把具有相同key值的记录组织到一起来达到排序的效果;
4.1.6 reduceworker会把排序后的数据作为参数传递到定义好的Reduce函数中,而函数的最终输出结果会持久化存储到outputfile中去;
4.1.7 当所有的Map任务和Reduce任务结束之后,master重新唤醒用户主程序,至此一次MapReduce操作调用完成。
4.2 MapReduce统计应用
在本文的气象数据统计处理中,主要通过MapReduce程序来统计以下数据信息:
第一,全国各省的历史最高气温和最低气温;
第二,全国各省的历史最高能见度和最低能见度;
第三,全国各省的历史最高风力和最低风力。无论哪一种统计应用,其计算流程大体上是一致的,如图4:
图4
4.2.1 首先执行Map计算对气象数据进行逐年统计,统计格式如下:
(1996,[10,25,-30,45,20….])
(1997,[17,-10,36,38,15….])
(1998,[23,-12,25,18,24….])……
4.2.2 之后执行Reduce计算,从每一年的统计列表中选取最大和最小值。
(1996,-30)(1996,45)
(1997,-10)(1997,38)
(1998,-12)(1998,25)
4.3 海量数据存储
由于物联网数据存储量较大,这里为了提高数据的检索效率,采用BerkeleyDB进行数据存储。BerkeleyDB是一个高性能的,嵌入数据库编程库,可以保存任意类型的键/值对信息,同时支持数千级别的并发线程同时操作数据库,支持最大256TB的数据源,广泛用于各种操作系统,包括大多数Unix类操作系统和Windows操作系统以及实时操作系统。
随着物联网技术的广泛普及,电子数据的增长日趋庞大,传统数据处理方式已经没有办法去消费这些数据。而随着云时代的到来,给人们以全新的思想去解决这些问题,从而打破传统意义上的硬件束缚。本文实现了一种物联网云服务,能对物联网数据在云平台上进行高效处理(map/reduce)、存储检索。
[1]杨正洪,周发武编著.云计算和物联网[M],清华大学出版社,2011.9:8.
[2].PapazoglouMP,vandenHeuvelW.ServiceOrientedarchitectures:approaches,technologisandresearchissues.The VLDBJournal,2007(16):389-415.
[3]刘鹏主编.云计算[M],电子工业出版社,2010.3:163.
[4]张云勇,张智江,刘锦德,刘韵洁编著.中间件技术原理与应用[M],清华大学出版社,2010.8.
TP393
A
1671-0037(2014)01-56-2
2013年12月26日。
单士华(1971-),女,学士,讲师,研究方向:计算机应用。李展(1983-),男,学士,讲师,主要研究方向:软件工程。