随着大规模集成电路、低功耗无线通信、微型传感器等支撑技术的进步,物联网在继计算机和互联网之后,成为IT领域发展的重点,它通过网络技术互联大量的传感器、物品标识与定位装置、执行器等设备,实现物与物之间的信息交互[1-2],并进而通过传感器与执行器扩展到与环境和人的交互,实现人、机、物三元世界的融合[3],推动整个世界向着自动化、智能化的世界进步。
物联网服务平台是完整的物联网应用系统的大脑,承担着核心的多传感器数据汇聚、融合、处理、优化和控制的功能,它与传统事务处理型数据中心的区别和设计挑战主要是如何在保持高并发的同时实现较低延迟的实时数据处理[3-4],并有能力面向用户需求提供丰富的通信模式。从提供数据通信的功能角度看,物联网服务平台连接了大量外围设备,本身可抽象为一个连接了海量设备的快速消息引擎,因此可充分借鉴传统分布式消息内核设计中的发布/订阅机制、轮转调度机制等实现对各种通信模式和负载均衡的支持[5],以及提高整个系统的接入能力以允许海量设备直接连接。该文据此思想设计设计开发了一套支持物联网端到端双向实时数据传输的消息内核,实现了一个物联网服务平台原形系统,并对其性能进行了测试以验证其在大规模物联网系统中应用的有效性,可为大规模物联网服务平台的实时数据传输架构设计提供量化参考。
1 物联网系统的基本架构
1.1 硬件架构
完整的物联网应用系统的硬件架构如图1所示,主要包括与物理环境交互的无线传感网部分(含无线传感器、执行器等各种现场设备)、云端的服务中心部分和与人交互的智能设备部分,其中,服务中心可进一步分为负责设备接入的服务网关(Gateway Service)、负责用户接入的Web应用和各种内部服务,且每一个服务可在负载过大时引入集群,所有服务均通过内部的消息总线连接,并且通过消息总线实现消息的发布/订阅机制和负载均衡机制。
1.2 软件架构
云端的服务中心[6]是整个物联网系统的中心,如图1所示,它由多个服务组成,且多个服务之间通过分布式消息总线连接以实现各种模式的消息通信以及负载均衡。必要时,每个服务还可以进一步借助集群技术提高处理能力。因此,分布式消息队列是整个服务中心底层设计开发的关键。
1.2.1 分布式服务
典型的云端服务系统包含:
1) 面向设备接入的服务网关(Gateway):接收来自传感网络的测量数据,例如车辆内部温度、湿度等,并且将接收到的数据放入消息队列。
2) 面向用户接入的交互服务(UIO):包括提供应用管控的Web应用(Web Application)和与移动设备浏览器实现双向实时数据通信的(IO)两部分。
3) 实时处理服务(Realtime Service):实时数据传输处理,主要负责实时显示变量的新数据以及用户界面的绘图显示服务。
4) 非实时处理服务(Non-Realtime Service):可持久化存储,离线分析,主要负责变量历史数据的查询和增删改。
5) 警报服务(Alert):对有异常的情况通过Email或者Short message的方式推送到前端客户端。
1.2.2 软件架构与模块分解
服务端采用JAVA语言,它具有面向对象、分布式、平台无关性等特点,采用Eclipse开发工具,利用maven项目管理工具进行系统软件模块程序编写。下面是实时信息服务系统的软件模块分解,其中通信机制主要采用Vert.x框架[7]。
Gateway Service作为网关服务程序,在这里的功能相对简单,主要起接受来自传感网络的数据,并且直接转发数据。Real-time Service通信模块信息数据传输主要是两个部分,一部分是负责接收和处理与Gateway Service模块传输过来的数据,另外部分负责处理与Web Application Service交互信息数据。当Gateway Servie实时数据传输过来,我们将其持久化存储在SSDB Nosql,这是一个高性能、面向大数据存取的非关系型数据库,另外我们将实时数据传递给Web Application网页程序,同样,网页程序给与在Browser实时显示,实现人机交互操作。
2 实时数据传输通路的设计与开发
2.1 数据通路设计
如图2所见,服务中心包含两条主要的双向数据通路,实时通路Device-Gateway-Realtime-UIO-Browser和非实时数据通Device-Gateway-Non-Realtime-UIO-Browser,分别对传输数据做持久化和实时显示处理。
出于物联网应用中实时监控的需求,这里采用实时和非实时数据通路分开设计的方法,实时数据处理仅记录有限的历史数据,以满足面向监控的报警生成需求和UIO的监控需求为目标,不求功能的完备,而非实时服务要负责数据的持久化存储、检索、深层次的统计分析、建模与预测等。同时,为了支持来自UIO的命令下发和测试需要,实时数据通路被设计为支持双向数据传输。
2.2 分布式消息总线的设计与开发
面向服务的构架(SOA)被越来越多地应用于高性能的实时系统[8-9],消息总线是实时系统中的动脉,是实现多个服务之间多种通信模式的技术关键[10-11]。
分布式消息总线的通讯模式中常见的通信模式有四类[12-13],传统的一对一结对通信,只需要支持传统的TCP Socket模型,经常使用的通信模式只有三类。
1) 请求回应模型。由请求端倡议请求,并期待回应端回应请求。从请求端来看,是一对对收发配对的;反之,在回应端必然是发收对。这个模型的更底层的端点地址是对上层埋没的,每一个请求都隐含有回应地址,而利用则不关心它。
2) 发布订阅模型[14]。这个模型里,发布端是单向只发送数据的,且不关心是否把全部的信息都发送给订阅端。如果发布端开始发布信息的时候,订阅端尚未连接上来,这些信息直接丢弃[15]。不过一旦订阅端连接上来,中间会保证没有信息丢失。同样,订阅端则只负责接收,而不能反馈[16]。图3是一个典型的Pub/Sub模型示意图。
3) 管道模型。这个模型里,管道是单向的,从 PUSH 端单向的向 PULL 端单向的推送数据流。
本文中的消息总线采用基于Java的Vertx技术开发,并充分利用了Vertx自带的分布式部署能力以简化整个后端服务的开发。在此系统设计过程中,主要有五个模块部分之间相互实时数据信息的传输,分别为Gateway Simulator、Gateway Service、Realtime Service、Web Application和浏览器Browser,Gateway Simulation与Gateway Service之间采用Tcp通信协议,Gateway Service、Realtime Service和Web Application之间使用Vert.x的EventBus机制实现,Web Application和Broswer,则是通过WebSocket相互传递数据,WebSocket是浏览器与服务器全双工通信[17] (full-duplex),而Vert.x对WebSocket也提供了很好的API支持。
3 端到端实时数据流传输的性能测试评价
3.1 实验测试环境
测试环境和设备说明本设计实验需要的设备,在同一个局域网下的四台主机,如表1所示。
在本测试网络性能的时候,考虑的是实时数据时延和服务器接入能力两个性能参数。我们采用在同一个局域网下不同的主机运行分别测试和服务程序,实现模拟分布式的运行环境,其中包含同一个网段下四台主机,如图4所示。当连接数不断增加时,网络性能指标参数也随之改变,我们需要考虑在不同的连接数或者连接数不断增大的时候时延的变化曲线。我们主要选择端对端、接入能力这种情况下测试网络性能,获取指标的数据,并且加以分析和评价。
3.2 端对端传输时延的测试
3.2.1 测试环境部署
端对端测试环境系统部署如图5所示,模拟物联网服务平台系统。
3.2.2 测试方法
在端对端时我们考虑使用定时器间隔30ms中发送一次数据,确保数据能在下一次发送出去,从而不影响下次发送的状况,在从Gateway Simulator应用程序发送信息数据,经过多次传输和多个模块,最后在Browser接收数据并且写回数据给Gateway Simulator,形成之前所示的来回通道,如此往返的接收,测试网络时延性能。
3.2.3 测试结果
本实验设计总共进行11次测试,试验编号分别为1-11,并且每次试验记录10次的往返时间值,求取每次试验时延的平均值,测试结果如图6所示,横轴表示试验编号,纵轴表示每次试验的平均时延。同时记录每次测试时延的最大最小值,绘制表格,测试结果如表2所示。
通过上图我们大致可以知道该设计系统中时延参数,数值平均在10ms-18ms之间波动,最小值出现7ms和最大值29ms,这可能出现某次数据传输的拥挤与否有关。时延作为物联网重要参数指标,在此设计系统中测试得到的数值对于物联网需求而言是满足要求的,能保证物联网数据低时延传输。
3.3 接入能力测试
3.3.1 测试环境部署
接入能力测试环境部署如图7所示。
3.3.2 测试方法
在物联网平台服务系统中,另外一个重要参数指标是网络的并发性。该系统基于事件驱动并发模型,每次客户端Gateway Simulator应用程序不断提高连接数去访问服务器,在网关服务端Gateway Service应用程序定时检测已连接客户端的量,绘制曲线图。测试环境:在同一个局域网下,系统拥有四台主机,其中三台作为客户端运行客户端程序去请求连接,一台作为客户连接服务程序。实验总共进行8次测试,编号为1-8。其中图8表示其中一次试验的连接曲线图,横轴表示服务器运行时间,纵轴表示随时间变化的已连接数。图9描绘这8次试验在单位时间内每ms客户端的连接数,其中横轴表示试验编号,纵轴表示单位时间内每ms服务器连接数。表3记录了8次试验客户端最大的可连接数,表示该系统的可接入能力,可见在最好的情况下能接近9万的连接数,其余的也在8万左右。
从上图我们得到,最好的测试效果能达到91812可最大连接数,基本上保持多数能在89100左右,测试此设计系统接入能力满足物联网接入能力的要求,并且可以扩展程序的规模以达到更高、更好地接入能力以满足高负荷的连接。
参考文献:
[1] 胡永利,孙艳丰,尹宝才.物联网信息感知与交互技术[J].计算机学报, 2012,35(6):1147-1163.
[2] 孙其博,刘杰,黎羴,等.物联网:概念、架构与关键技术研究综述[J].北京邮电大学学报,2010,33(3):1-9.
[3] 刘强,崔莉,陈海明,等.物联网关键技术与应用[J].计算机科学,2010,37(6):1-4,10.
.电气时代,2010(5) :32-38.
[5] 张玉洁,何明,孟祥武,等.基于用户需求的内容分发点对点网络系统研究[J].软件学报,2014,25(1):98-117.
[6] 罗俊海,周应宾,邓霄博,等.物联网网关系统设计[J].电信科学,2011,27(2):105-110.
[7] Tim Fox,Vert.x 文档手册[DB].Computer communication. http://.
// 14th IEEE International Symposium Press,2011:28-31.
[9] 吕希艳,张润彤.基于SOA的企业信息资源整合[J].中国科技论坛,2006(2):103-105.
[10] 卢致杰,覃正,韩景倜,等.SOA体系设计方法研究[J].工业工程,2004,7(6):14-19.
中国论文网(www.lunwen.net.cn)免费学术期刊论文发表,目录,论文查重入口,本科毕业论文怎么写,职称论文范文,论文摘要,论文文献资料,毕业论文格式,论文检测降重服务。 返回通信学论文列表